0

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

这是代码,

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)
4

2 回答 2

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
于 2012-04-24T18:47:28.907 回答
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);

于 2012-04-24T18:44:39.647 回答