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循环,多用矩阵或者向量的方式来处理。
首先一点要说明的是,在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)的含义n =
17
>> [x,m]=rat(12/34)
x =
6
m =
17
计算tic和toc之间那段程序之间的运行时间,格式为
- tic
- 。。。。。。。。。。
- toc