Matlab的。我有一些错误

时间:2017-07-25 18:04:42

标签: matlab indexing

l_0=1.5; 
l_1=1.6;  
Lambda_min=2*(1+1)*l_0; 
Lambda_max=2*(1+1)*l_1; 
n_0=linspace(2,2.11,10);
n_1=linspace(2.30,2.50,10);
for i=1:10  
 for j=1:10
   for k=1:10
    l(i) = Lambda_min * ( Lambda_max/Lambda_min)^(i/10)

    sum=sum(l)
    d_0(:,j)= l(i)/((n_0(i)/n_1(i)+1))                
    d_1(:,k)= (n_0(i)/n_1(i))*d_0(:,j)   
    end
   end
 end

首先;我想找到l(i)的值,它是一个向量,然后取该向量的总和。第二,对于d_0(:,j)我想创建一个矩阵,以便我可以稍后绘制它,每次从l(i),n_0,n_1获取不同的值。如果我取n_0和n_1的值并放入for循环,我将得到索引错误,因为它应该是逻辑或整数。

我的矩阵被覆盖,不知道如何避免它。注意,我想在d_0和d_1 n_0和n_1中从linspace获取值。例如,在第一次迭代中,n_0 = 2 n_1 = 2.30,然后第二次迭代获取linspace中的下一个值。

我试着看到n_0(i)的值,它给了我10次迭代。它给了我更多的覆盖。

1 个答案:

答案 0 :(得分:0)

尝试:

l_0=1.5; 
l_1=1.6; 

Lambda_min = 4*l_0; 
Lambda_max = 4*l_1; 

n_0 = linspace(2,2.11,10) % don't add semicolon so you can check this is giving 10 values
n_1 = linspace(2.30,2.50,10) %

for i=1:10  
    l(i) = Lambda_min * ( Lambda_max/Lambda_min)^(i/10) % should give you 10 values
 end

 d_0= l./((n_0./n_1+1)); % This will only give you a vector, not a matrix.               
 d_1= (n_0./n_1).*d_0;   

Lsum = sum(l); % should give you one value