我试图实现MUSIC算法,我选择了Julia编写代码。
DOA=ones(1,rand(1:10))
for i in 1:length(DOA)
DOA[1,i]=rand(0:1000)*pi/180;
end
sensors=11;
freq=ones(1,length(DOA[1,:]))
for i in 1:length(DOA)
freq[1,i]=rand()*pi*100;
end
signals=length(DOA);
lambda=100;
dist=lambda/2;
A=zeros(signals,sensors);
snr1=rand(20:40);
N=200;
x=zeros(length(freq),N);
for j = 1:length(freq), for k = 1:signals
x[j,k]=2*exp(im*freq[j]*k);
end
for l = 1:signals, for m = 1:sensors
A[l,m]=exp(-im*2*pi*dist*sin(DOA[1,l])*m/lambda));
end

所以for j = 1:length(freq), for k = 1:signals
显示没有错误,但for l = 1:signals, for m = 1:sensors
之后的那个显示“无效的迭代规范”#39;错误。
我的新手尝试包括,评论for循环,完全删除它并在其间给出空格只是为了看看发生了什么。令人惊讶的是,即使在我多次保存文件并开始新的bash会话之后,它也向我显示了评论for循环和空格的相同错误。有关解决这个问题的任何想法?或者更好的是,什么可能导致这样的错误?我也为特定内容附上了截图,第38行是带有错误的for循环。
答案 0 :(得分:1)
您可以使用逗号使用一个多维for
循环,例如
for i = a:b, j = c:d
...
end
或多个单独的for
循环,不带逗号,例如
for i = a:b
for j = c:d
...
end
end
请注意,在理解中,这些形式是不同的
julia> [(i,j) for i = 1:2 for j = 4:5]
4-element Array{Tuple{Int64,Int64},1}:
(1, 4)
(1, 5)
(2, 4)
(2, 5)
julia> [(i,j) for i = 1:2, j = 4:5]
2×2 Array{Tuple{Int64,Int64},2}:
(1, 4) (1, 5)
(2, 4) (2, 5)