輸出始終兩個值時,它被認爲是隻有1 ..在Matlab中使用IF語句和結構的怪異行爲?
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;
它總是s打印
slackp(1)=[0 350]
錯誤繼續和多個其他項與他們一起0!這是爲什麼發生?我只是想存儲350,我不想在那裏0!
我試圖調試問題,並認識到,每當S1沒有= 1時,將打印一個0。它不應該。如果s1不是1
那麼就跳過IF語句。 s2也一樣。
「然而我注意到,在在t = 2下面的語句」。這是因爲'slackp(T)= 350;'是做'slackp(2)= 350;'這意味着它的第二個元素設置爲350 – Justin 2013-04-07 21:27:23
如果slackp是空的,那麼您一個元素添加到slackp(2)你會得到一個2元素數組,其中第一個元素爲0.這是發生在這裏的事情嗎? – Molly 2013-04-07 21:28:22