【发布时间】:2017-07-25 18:04:41
【问题描述】:
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 次迭代。它给了我更多的覆盖。
【问题讨论】:
-
您使用函数 sum 创建了变量“sum(i)”...不要在函数后命名变量。此外,l(i) 不应该在 k 和 j 循环中,因为它不会随着这些迭代而改变。 l(1) 是一个值,因此 l(1) 的总和将为您提供 l(1)。你有很多基本的 matlab 错误。
-
请尝试使用 matlab 调试器更好地理解您的代码,这可能使您能够自己解决问题或提出更好的问题。您的标题(我遇到了一些错误)并没有说明您的问题。