更改循环内的数组大小导致matlab中出现错误

时间:2012-04-24 18:27:21

标签: arrays matlab loops

我正在尝试动态设置数组的大小并在其中存储一些值,但这会导致错误。

这是代码,

syms k
x=[1 0 0 1];
y=[];
for b=1:4
    step1= x(b)*exp(-2*pi*1i*k*((b-1)/length(x)));
    y(b)=step1
end

我要做的是将step1的每个值存储在数组'y'中。

这是错误,

The following error occurred converting from sym to double:
Error using mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double
array.
If the input expression contains a symbolic variable, use the VPA function instead.
Error in Untitled3 (line 6)
    y(K)=1/exp((pi*k*3*1i)/2)

2 个答案:

答案 0 :(得分:1)

根据你想要做的事情,Matlab努力从双重变为符号,所以你应该从一开始就明确y是否包含符号元素:

syms k y
x=[1 0 0 1];
for K=1:4
    step1= x(K)*exp(-2*pi*1i*k*((K-1)/length(x)));
    y(K)=step1
end

答案 1 :(得分:0)

您是否有使用符号变量k和循环计数器K的原因?你好像混淆了两者。我认为这是你要实现的目标:

x=[1 0 0 1];
y=[];

for k=1:4
    y(k)= x(k)*exp(-2i*pi*k*((k-1)/length(x)));    
end

注意:使用大型循环时,MATLAB预先分配数组要快得多,而不是动态调整大小。例如,将y=[];更改为y=zeros(1,4);