Matlab 矩阵的for循环不起作用
假设我有一个矩阵Matlab 矩阵的for循环不起作用,matlab,debugging,matrix,Matlab,Debugging,Matrix,假设我有一个矩阵[1 2 3 5;1 3 4 5] 每行代表一条路径,每列代表该路径的节点。 例如:对于行1:1-2-3-5是具有节点1,2,3,5(其中1是开始节点,5是结束节点)的路径。 我想考虑弧之后的弧和弧。 例如:我想考虑(1,2)和(2-3),并给它分配一个成本。p> 我写了一个代码,但它显示了一个错误 for kkp = 1:size(R{ip},1) % R{ip} is my path matrix for jjp = 1:size(R{ip},2)-1
[1 2 3 5;1 3 4 5]
每行代表一条路径,每列代表该路径的节点。
例如:对于行
1
:1-2-3-5
是具有节点1
,2
,3
,5
(其中1
是开始节点,5
是结束节点)的路径。我想考虑弧之后的弧和弧。
例如:我想考虑<代码>(1,2)和<代码>(2-3),并给它分配一个成本。p> 我写了一个代码,但它显示了一个错误
for kkp = 1:size(R{ip},1) % R{ip} is my path matrix
for jjp = 1:size(R{ip},2)-1
for iip = 1:size (R{ip,2} -2)
up = R{ip}(kkp,jjp);
vp = R{ip}(kkp,jjp+1);
wp = R{ip}(kkp,jjp+2);
cost1 = wt(up,vp); %wt(i,j) is a cost matrix that i already inputed.
cost 2 = wt(vp,wp);
end
end
end
问题中代码的
3行
要么是打字错误,要么是您的问题:
for iip = 1:size (R{ip,2} -2)
应该是
for iip = 1:size(R{ip},2) -2
此外,您从不使用iip
。因此,您的示例中的第6行应该是:
wp = R{ip}(kkp,iip+2);
错误消息是什么?您不需要三个嵌套循环!将外部索引(路径数,
ip
)从1循环到numel(R),将内部索引(kkp)从1循环到numel(R{ip})-2,然后设置iip=kkkp+1,jjp=kkp+2,并像您所做的那样计算路径成本。并修复cost2=…
中的空格。我已进行了更正,但仍显示错误。我的成本2输出为零,但这是不对的。我的wt矩阵是:wt=[0240;1053;4505;0350];因此,如果路径1-2-3-4的成本1应该是2,成本2应该是5(对于2-3)和5(对于3-4)。你能把你的问题变成一个问题吗?这些调试问题往往会很快失控,因为您没有显示整个代码,所以仍然完全不清楚到底发生了什么。例如,在这里,我们只能猜测up
,yp
,wp
,我们不知道单元格R
——所有这些都可能会引起人们的兴趣。@abc:请参阅我上面的评论,但也请注意:您是否收到了实际的matlab错误消息
——还是不是您期望的结果?