Matlab中for循环是灰常慢的,如果可能的话尽量使用vector或matrix,效率会大大提高~
向量/矩阵运算有些需要注意的地方。假设x,y是两个2*2的矩阵
>> x=[1 2;3 4];
>> y=[4 3;2 1];
如果要对矩阵中每个元素都做同样的运算的话,运算符前要加. (比如 .*,.^)
>> x.^2
ans =
1 4
9 16
对每个元素都求平方。如果不加点的话,就变成了求矩阵x的平方,也就是x*x的矩阵相乘运算
>> x^2
ans =
7 10
15 22
同理,x*y就是一般的矩阵相乘,而x.*y就是x和y每个对应位置的元素相乘
>> x*y
ans =
8 5
20 13
>> x.*y
ans =
4 6
6 4
如果有时运行程序出现了矩阵维数不相符的错误提示,有可能是你想让对应位置的元素一一做运算,但是忘记了加点.,比如
>> a=1:5;b=6:10;
>> a*b;
??? Error using ==> mtimes
Inner matrix dimensions must agree.
有时候运行matlab程序,如果有大循环,尤其是嵌套的,时间长的真是让人心碎啊~~如果可以利用向量和矩阵运算,效率会提高不少。
详细可以参考http://blog.sina.com.cn/s/blog_489f4bab01000aju.html
还有就是matlab里很多函数都支持向量/矩阵直接做参数的,很方便~
比如:
>> x=[1 2 3;4 5 6];
>> max(x,3.5)
ans =
3.5000 3.5000 3.5000
4.0000 5.0000 6.0000