您的位置:首页 > 编程语言 > MATLAB

matlab 常用技巧

2010-11-10 12:58 489 查看
2013.2.1

做一个figure 怎么设置第一行两个图,第二行三个图,而且这五个图大小一样?效果是图片里的那样



可以用subplot来做

subplot(2,6,[2 3])
imagesc(rand(10))
subplot(2,6,[4 5])
imagesc(rand(10))
subplot(2,6,[7 8])
imagesc(rand(10))
subplot(2,6,[9 10])
imagesc(rand(10))
subplot(2,6,[11 12])
imagesc(rand(10))


2010-11-08 23:24:22

总结一些matlab日常使用的小技巧,方便的用法,随时更新

1. vertcat 用来垂直地连接矩阵

2. tic toc这二个函数可以获得程序执行时间,举个例子:

tic

for k=1:100

s=sum(k);

end

toc

结果:

Elapsed time is 0.000003 seconds.

3. function [ output_args ] = Untitled2( input_args )

%UNTITLED2 Summary of this function goes here

% Detailed explanation goes here

A = ['a bc 46 6 63 ghi 3 6';

'd ef 7 89 2 jk9 1 2']

B = sscanf(A, '%*s %*s %d %d %d %*s %d', [4, inf])

end

%每次读取一行,2代表A的行数,而%*s %d %d %*s表示读取每行前面4个组元。

%因为sscanf每次读取一个字符,而且读取的顺序是列优先从左到右的,然后同一列元素合为一个数

比如上面的例子中 476 689均为这样的数。

下面这个例子可以拿去佐证:

A = ['a bc 46 6 63 ghi 3 6';

'd ef 7 89 2 jk9 1 2']

B = sscanf(A, '%*s %*s %d %d %d %*s %d', [2, inf])

结果是B =

476 623

869 13

sscanf中用要求输入量内的元素必须严格等长,

像上面这样的用法我还没有用过,感觉没有什么大的用处。doc sscanf例子中不是给出了下面的用法:

for k = 1:2

C(k,:) = sscanf(A(k, :)', '%*s %d %d %*s', [1, inf]);

end

C

C =

46 6

7 89

4. 在matlab figure中用矩形框圈出感兴趣的区域

rectangle('Position',[100,300,70,50],'Curvature',[0,0],'LineWidth',2,'LineStyle','--','EdgeColor','r')

注释:rectangle('Position',[x,y,宽,高],'Curvature',[x曲率,y曲率],'LineWidth',‘线宽,'LineStyle','线型','EdgeColor','线色')

5. legend改变标注的位置

legend(....,'location','northwest')可以将标识框放置在图的左上角。

'North'
图例标识放在图顶端

'South' 图例标识放在图底端

'East' 图例标识放在图右方

'West' 图例标识放在图左方

'NorthEast' 图例标识放在图右上方(默认)

'NorthWest 图例标识放在图左上方

'SouthEast' 图例标识放在图右下角

'SouthWest' 图例标识放在图左下角
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: