我正在尝试动态设置数组的大小并在其中存储一些值,但这会导致错误。
这是代码,
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)
答案 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);