如何在matlab中将向量提升为幂?

如何在matlab中将向量提升为幂?,matlab,vector,vectorization,Matlab,Vector,Vectorization,使用FreeMat我一直在尝试将向量提升到2的幂,使用以下代码: v=[4 -3 8 -7 2 -10 11 4] disp('v before = ') disp(v) for i=1:1:length(v) if (v<0) & (v>-8) v(i)=v(i)^2 end end disp('v after = ') disp(v) v=[4-38-72-10114] disp('v before=')) 显示(五) 对于i=1:1:长度(v

使用
FreeMat
我一直在尝试将向量提升到2的幂,使用以下代码:

v=[4 -3 8 -7 2 -10 11 4]

disp('v before = ')
disp(v)

for i=1:1:length(v)
if (v<0) & (v>-8)
    v(i)=v(i)^2

end   
end

 disp('v after = ')
 disp(v)
v=[4-38-72-10114]
disp('v before='))
显示(五)
对于i=1:1:长度(v)
如果(v-8)
v(i)=v(i)^2
结束
结束
disp('v after='))
显示(五)
但是它不断返回相同的值。

  • 为什么?
  • 正确的方法是什么
您需要更改

if (v<0) & (v>-8)
if(v-8)

if(v(i)-8)

为什么不使用逻辑索引将其矢量化?不适用于循环\如果需要条件:

v(v<0 & v>-8)=v(v<0 & v>-8).^2
v(v-8)=v(v-8)。^2
v(v<0 & v>-8)=v(v<0 & v>-8).^2