【发布时间】:2013-09-30 06:20:57
【问题描述】:
我正在编写一个 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 很陌生。非常感谢任何帮助。
我已经尝试了下面的代码。 值 = sum((1:numel(x)).*x.^2);
但我收到以下错误,“使用错误。* 矩阵尺寸必须一致。”。我为 x 添加了值以显示我正在使用的简单值。再次感谢您的帮助。
【问题讨论】:
-
点符号用于运算符(
.*、.^等),不适用于向量