for i=0:255
m(i+1)=sum((0:i)'.*p(1:i+1)); end
任何人都可以解释发生了什么。 p是一个256个元素的数组,与m相同。
答案 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
。