MATLAB基本知识

1.scatter可用于描绘散点图
1.scatter(X,Y)
X和Y是数据向量,以X中数据为横坐标,以Y中数据位纵坐标描绘散点图,点的形状默认使用圈。
其中的X、Y只要是一维数组就行,例如在Lab颜色空间的X可以不用矩阵求反,如下:
<span style="color:#333333;background-color: rgb(255, 255, 255);">cform = makecform('srgb2lab');
lab = applycform(im,cform);
ab = double(lab(:,:,2:3));
nrows = size(lab,1); ncols = size(lab,2); %这个不管图像的是多少通道,其返回的是图像的宽高。
X = reshape(ab,nrows*ncols,2)';
figure, scatter(X(1,:)</span><span style="color:#ff0000;background-color: rgb(255, 255, 255);">'</span><span style="background-color: rgb(255, 255, 255);"><span style="color:#333333;">,X(2,:)</span><span style="color:#ff0000;">'</span><span style="color:#333333;">,3,'filled');  box on; %显示颜色空间转换后的二维样本空间分布,</span></span>
其中与
figure, scatter(X(1,:),X(2,:),3,'filled');得出的画图结果一样。

例子:
 X = [1:10];
 Y = X + rand(size(X));
 scatter(X, Y)
2.scatter(...,'filled')
描绘实心点。
3.scatter3(x,y,z)
描绘三维图像
2.函数 reshape 的用法

例如,行向量:a = [1 2 3 4 5 6] 执行下面语句把它变成3行2列:b = reshape(a,3,2) 执行结果:b =  1 4  2 5  3 6

看Matlab的help文档讲得不是清楚。 先给上一段代码: >> a=[1 2 3;4 5 6;7 8 9;10 11 12]; >> b=reshape(a,2,6); 这段代码的结果是这样的: >> a      1     2     3      4     5     6      7     8     9     10    11    12 >> b      1     7     2     8     3     9      4    10     5    11     6    12 其中的规律是这样的,先把矩阵a按列拆分,然后拼接成一个大小为m*n的向量。然后对这个向量每隔m间隔取一个元素组成一个向量b_i,之后的向量b_i+1也是这样生成,只不过第一个元素往下移一位。这样做完之后得到m个大小为n的行向量,将这些行向量拼接即可得到矩阵b。
其组合矩阵的原理是:
 参考网址:rashape使用方法
后记: 毕业设计中用到一个向量变换,一开始比较纠结,用循环实现的。迭代1000多次要用到2秒。后来用reshape函数,总共才用了0.03秒,对于我这个深度强迫症患者来说,这两秒时间我还是看得比较宝贵的,哈哈。 以后写matlab要引以为鉴,尽量少用for循环,多用矩阵或者向量的方式来处理。
3.矩阵括号里的元素的意义:

首先一点要说明的是,在matlab中,矩阵中的元素序号是按照“先行后列”的顺序排列的。

设如下随机矩阵:

A=rand(4,6)

A =

    0.6551    0.9597    0.7513    0.8909    0.1493    0.8143
    0.1626    0.3404    0.2551    0.9593    0.2575    0.2435
    0.1190    0.5853    0.5060    0.5472    0.8407    0.9293
    0.4984    0.2238    0.6991    0.1386    0.2543    0.3500

则执行下面命令:

A(6)

ans =

    0.3404

得到结果很容易看出是按照“先行后列”的排序。

其次,对于矩阵中的元素表示方法,主要分以下几点:

1.A(m,n)代表矩阵A中第m行,第n列的值:

A(3,4)

ans =

    0.5472

2.对于矩阵A(m,n)

若是m用:代替即A(:,n)代表第n列的元素;若是n用:代替即A(m,:)代表第m行元素;

A(2,:)

ans =

    0.1626    0.3404    0.2551    0.9593    0.2575    0.2435

若是用[a b c]代替m即A([a b c],n)则表示第a,b,c行,n列中的元素;

A(:,6)

ans =

    0.8143
    0.2435
    0.9293
    0.3500

若是用[a:b](a<b)代表m即A(a:b,:)则表示a到b行的所有元素;

A(2:4,:)

ans =

    0.1626    0.3404    0.2551    0.9593    0.2575    0.2435
    0.1190    0.5853    0.5060    0.5472    0.8407    0.9293
    0.4984    0.2238    0.6991    0.1386    0.2543    0.3500

若是用[a b c]代替m,用[x y]代替n即A([a b c],[x y])则表示a,b,c行中x,y列中的元素;

A([1,3],5)

ans =

    0.1493
    0.8407

3.对于三位矩阵B(x,y,z),相当于若干个平面一次叠加;

如B(:,:,n)则表示B中的第n个平面上的所有矩阵。图像里的话即相当于是其第几通道。

3、find(rand<D/D(end),1)的含义
  其中find(X,1)指的是在X中找到第一个元素是1的位置,并返回其索引。其中的D(end)指的是在矩阵元素里的最后一个元素。
4、 矩阵[~,n]其中的’~‘代表的意义
其中‘~’指的是不接受和存储这个位置上的返回数值,其例子如下:
[~,n]=rat(12/34)
n =
17
>> [x,m]=rat(12/34)
x =
6
m =
17
其中的rat函数是对这个数值进行化简,

3、matlab中b ~= round(b)是什么意思?
其想当于C中的!=,即不等于。


4、tic和toc组合(使用最多)
计算tic和toc之间那段程序之间的运行时间,格式为
  1. tic
  2. 。。。。。。。。。。
  3. toc

5、MATLAB里的图像处理函数



6、matlab里的对数函数

    >>log2(4)

    ans = 2

    >>log10(10)

    ans = 1

    >>log(10)

    ans = 2.3026

    注:log(10)等于loge(10),Matlab中log()的默认值为loge()。


4、MATLAB里的图像处理函数:




5、在MATLAB里的里一个.m文件里编写自己的函数时,出现了未定义与‘double’类型的输入参数相对应的函数原因? 
   其因为定义的函数名与文件名不同导致的,这里只需把其名字改为一样就可以调用了。

6、数据的初始化
如果初始化为零则是:a = zeros(1,N) 建立一个1行N列的数组,初值为0, 里面的矩阵大小可以使用size()函数
如果初始化为1则是:ceshi=ones(size(hm_test)); 这里的size是返回矩阵的大小。









  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值