matlab提高计算的效率的几个方法

1.向量化

e x a m p l e : example: example:计算 1 到100 之间的所有整数的平方,平方根,立方根。

利用向量化的方法进行计算:

ii = 1:100; 
square = ii .^2; 
square_root = ii .^ (1/2); 
cube_root(ii) = ii .^ (1/3); 

解决了for循环速度慢的问题,下面for循环的方法不提倡。

for ii = 1:100 
	square(ii) = ii ^2; 
 	square_root(ii) = ii ^ (1/2); 
 	cube_root(ii) = ii ^ (1/3); 
end 

2.逻辑数组方法

e x a m p l e : example: example:计算二维数组a中大于5的元素的平方根,然后其余的数的平方。a具体如下:

a = [1 2 3; 4 5 6; 7 8 9]; 

下面使用逻辑数组的方法只要三行,读者可自行打印b来查看一下逻辑数组b就能知道是什么含义。

b = a > 5;
a(b) = sqrt(a(b)); 
a(~b) = a(~b) .^2; 

解决了for循环和判断语句的速度慢的问题,下面for循环的方法不提倡。

for ii = 1:size(a,1) 
	for jj = 1:size(a,2) 
		if a(ii,jj) > 5 
			a(ii,jj)=sqrt(a(ii,jj)); 
		else 
 			a(ii,jj) = a(ii,jj)^2; 
 		end 
 	end 
end

笔记摘录自:

[1] S.J.Chapman《MATLAB编程》中文版

上一篇:python装饰器保留原有函数名称和属性functools.wraps()


下一篇:在 Fabric 中使用私有数据