无法理解这个MATLAB语法?

时间:2012-04-09 08:35:07

标签: matlab

for i=0:255
m(i+1)=sum((0:i)'.*p(1:i+1)); end

任何人都可以解释发生了什么。 p是一个256个元素的数组,与m相同。

2 个答案:

答案 0 :(得分:4)

p = (0:255)';
m = zeros(1,256);
for i=0:255
    m(i+1)=sum((0:i)'.*p(1:i+1)); 

end

m[i+1]包含[0,1,2,..,i](p[1],...,p[i+1])

的标量积

你可以把它写成:

p = (0:255);
m = zeros(1,256);
for i=0:255
    m(i+1)=sum((0:i).*p(1:i+1)); 

end

或者:

p = (0:255);
m = zeros(1,256);
for i=0:255
    m(i+1)=(0:i)*p(1:i+1)'; 

end

如果您不记得,那就是scalar product

的定义

答案 1 :(得分:1)

无论p是什么,您都可以通过以下方式计算m

dm = (0 : length(p) - 1)' .* p(:); % process as column vector
m = cumsum(dm);

提示:写m [n]的公式,然后写m [n + 1],然后减去得到公式:

m[n+1] - m[n] = (n - 1) * p[n]

这是dm