【发布时间】:2013-04-07 21:15:20
【问题描述】:
当它应该只有 1 时,输出总是两个值..
s 是一个结构体,其中
1x1024 struct array with fields:
ID
s1
s2
s3
s4
PB1
PB2
PB3
PB4
eG
next
我有以下循环:
for t=1:length(s)
if s(t).eG==0
if s(t).s1==1
if s(t).PB1==0
slackp(t)=0;
elseif s(t).PB1==1
slackp(t)=350;
elseif s(t).PB1==2
slackp(t)=600;
elseif s(t).PB1==3
slackp(t)=750;
end
end
if s(t).s2==1
if s(t).PB2==0
slackp2(t)=0;
elseif s(t).PB2==1
slackp2(t)=500;
elseif s(t).PB2==2
slackp2(t)=620;
elseif s(t).PB2==3
slackp2(t)=785;
end
end
end
end
但是我注意到,在 t=2 的以下语句中
elseif s(t).PB1==1
slackp(t)=350;
它总是打印出来
slackp(1)=[0 350]
错误结转,其他多个条目旁边有 0 !!为什么会这样?我只是想存储 350,我不想要 0 !
我尝试调试问题,并意识到只要 s1 不 =1,它就会打印一个 0。它不应该。如果 s1 不是 1 则跳过 IF 语句。 s2 也是如此。
【问题讨论】:
-
'但是我注意到,在以下 t=2 的声明中'。这是因为
slackp(t)=350;正在做slackp(2)=350;这意味着它将第二个元素设置为 350。 -
如果 slackp 为空,则向 slackp(2) 添加一个元素,您将得到一个 2 元素数组,其中第一个元素为 0。这就是这里发生的情况吗?