我正在编写一个Matlab函数,它将矢量平方的第i个元素乘以第i个值。我可以让函数工作,但我不想使用for循环。我想在没有for循环的情况下使用sum matlab函数。
%x is the vector
x = [3; 3; 3; 1; 1];
%value = sum(.x^2); I tried this but this wouldn't work as I can't figure out how to get the ith value.
sumvalue = 0;
for i=1:length(x)
fprintf('The j is %d, the value is %d.\n',i, x(i));
sumvalue = sumvalue + (i * x(i)^2);
fprintf('The sumvalue is %d.\n',sumvalue);
end
我已经尝试过其他一些东西,但我似乎无法找到或弄清楚如何在不使用for循环的情况下获得第i个值。我正在考虑在向量(.x)上使用点符号,但我不确定如何使用它,然后我又回到了没有第i个值的问题。我不是新编程,但我是使用Matlab的新手。非常感谢任何帮助。
我已尝试过以下代码。 value = sum((1:numel(x))。* x。^ 2);
但是我收到以下错误,“使用错误。* Matrix尺寸必须同意。”我已将值添加到x以显示我正在使用的简单值。再次感谢您的帮助。
答案 0 :(得分:2)
计算总和:
sum((1:numel(x)).'.*x(:).^2)
请注意,向量1:numel(x)
取代了i
,但是采用了矢量化形式。
如果你想要所有的部分总和:
cumsum((1:numel(x)).'.*x(:).^2)