'无效的迭代特定'朱莉娅的错误

时间:2017-07-10 12:56:30

标签: signal-processing julia

我试图实现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循环。

I've attached a screenshot too for the specifics, line 38 being the for loop with the error.

1 个答案:

答案 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)