Matlab。我犯了一些错误

Matlab。我犯了一些错误,matlab,indexing,Matlab,Indexing,首先,;我想找到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)的值,它

首先,;我想找到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次迭代。它给我的比被覆盖的更多

试试看:

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

您使用函数sum创建了变量“sum(i)”。请勿在函数后命名变量。另外,l(i)不应该在k和j循环中,因为它不会随着这些迭代而改变。l(1)是一个值,所以l(1)的和会给你l(1)。您有很多基本的matlab错误。请尝试使用matlab调试器更好地理解您的代码,这可能使您能够自己解决问题或提出更好的问题。你的标题(我有一些错误)不能说明你的问题。谢谢你帮助我。它确实给出了n_0的10个值。我在赋值A(:)=B中收到错误消息,A和B中的元素数必须相同。新尝试计算(第13行)d_1(i)=(n_0(i)/n_1(i))*d_0(:,i)时出错。。另外,我得到了最后一行Lsum=sum(l)的错误。这是消息下标索引必须是实正整数或逻辑数。抱歉,它应该是d_0(i)而不是d_0(:,i)。我现在就编辑,当然。如果这回答了你的问题,接受它作为一个答案,让别人知道。否则,只需发表评论,让我知道你还在挣扎什么。很抱歉,它不起作用。在我看来,它只是从n_0和n_1中取一个值。我用手算了算,得到了同样的结果。矩阵在每次迭代时都会被覆盖。您没有矩阵。你只有向量。您正在尝试使用n_0和n_1创建矩阵吗?
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