matlab程序向量化理解

matlab程序向量化理解

 

matlab程序中引入程序向量化的概念,使用向量化的程序代码和语句来可以用来替代循环结构;在程序设计和执行效率方面较有优势。

 

简单的程序向量化示例:

如对数组的每个元素进行相同运算时,即可采用程序向量化的方式;

a为拥有10个元素的数组,将数组中的元素都加上某个值M,最容易想到的方式:

for i=1:10

a(i) = a(i) + M;

end

 

而采用程序向量化的处理方式:

a = a+M即可 //matlab体系可以自动完成对a的每个元素进行操作的处理;

 

程序向量化提供了更加灵活的方式:

对一个拥有k各元素的数组a中的每M个连续元素进行求和;

 

最简单的处理:

for i=1:(K-M)

b(i) = 0;

for j=1:M

b(i) = b(i)+a(i+j-1);

end

end

采用sum函数处理方式:

for i=1:(K-M)

b(i) = sum(b(i:(i+M-1));

end

采用矩阵运算的方式:

a1=a(1:(K-M));

a2=a(2:(k-M+1));

... ...

aM=a(M:k);

b=a1+a2+a3+... ...+aM

 

但然也可以引申其他多种处理的方式,实际的使用哪种方式需要根据实际情况来确定;

简单地理解:更高层级的抽象数据类型的直接运算可以替代掉复杂的基础元素的循环结构处理。

 

note常用矩阵运算函数说明(doc=>function reference=>data analysis):

对数运算:log log10 log2

开根号:sqrt

求绝对值:abs

四舍五入的操作:round

数字转字符串:num2str

最大最小值:min max

平均值:mean

中间值:median

mean和median的区别:mean是平均数,而median是让其左右的数目分布相同

方差:variance / var

标准差:std

协方差与相关系数:cov corrcoef xcov xcorr

量化差别:

var(...,0),std(...,0); -- 采用N-1

var(...,1),std(...,1); -- 采用N

数据中出现次数最多的数:mode(most frequent values in array)

conv/randint

拟合函数工具:cftool

 

你可能感兴趣的:(程序设计)