关于matlab矩阵用循环赋值,为什么只有第一行被赋值,其他的赋不进去?

现在想对一个矩阵Nnev赋值
Nnev=zeros(100,24);

i=1;
j=1;
k=1;
while k<=100
while i<=24 && j<=m % m=10为可以充电时间段的个数
if L1+L2-Pnon(i)>0
Nnev(k,i)=nev(k,j); %为可充电的时间段分配充电车数量
j=j+1;
end
i=i+1;
end
k=k+1;
end

运行结果是只有第一行被正常赋值了,其他都是0,请教高手这是怎么回事?要怎么改呢?万分感谢~

从流程上看没有问题
你检查一下条件 L1+L2-Pnon(i)>0 是否满足, 还有满足时 nev(k,j) 的值是否为0
还有j<=m 是否已经不满足了追问

当我不用循环单设k=1;k=2;k=3....k=9的时候是可以给Nnev赋值的。

追答

那就检查一下那些条件

追问

条件应该是满足的吧!不然单独让k=1.2.3也就不会出现可以赋值的状况了。
后面也用到了双重循环,仍旧只有第一行被赋值了:
x=rand(1,100);
soc=0.55*x+0.3;
i=1;
j=1;
Pev=zeros(100,24);
while i<=100
while j<=24
Pev(i,j)=K(j)*(0.85-soc(i)); %k(j)在前面已知了
j=j+1;
end
i=i+1;
end

这是怎么回事啊?O(∩_∩)O谢谢

追答

j 的值没初始化. 改成
x=rand(1,100);
soc=0.55*x+0.3;
i=1;
Pev=zeros(100,24);
while i<=100
j=1;
while j<=24
Pev(i,j)=K(j)*(0.85-soc(i)); %k(j)在前面已知了
j=j+1;
end
i=i+1;
end

追问

呃,这个和J 没什么关系吧,j表示列,第一行的每列都可以赋值的,只是从第二行开始每行都是0。

追答

但当i=2时, j = 25, 里面的while 失效了

温馨提示:答案为网友推荐,仅供参考
相似回答