看板 MATLAB 關於我們 聯絡資訊
有兩個矩陣a與c, 有一個亂數值b; a矩陣內的元素為0到1的累積矩陣(詳見下例)。 想要判斷當b數值落在a矩陣元素內的區段時, 對應的c矩陣元素就記為1, 否則為0。 程式範例: a = [0.3, 0.6, 0.85, 1]; b = rand(1); c = zeros(1:4); if b < a(1); c(1) = 1; else c(1) = 0; end if b > a(1) && b <= a(2); c(2) = 1; else c(2) = 0; end if b > a(2) && b <= a(3); c(3) = 1; else c(3) = 0; end if b > a(3) && b <= a(4); c(4) = 1; else c(4) = 0; end 過去我有印象,好像可以透過多層if的判斷來寫, 但當下忘記要怎麼寫了... 所以只能用這種相對比較笨的方式來作多次if 判斷... 不曉得板上有誰能提供比較聰明 & 簡潔的寫法嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.213.195
asklo:c=zeros(1,4)才對吧? elseif應能滿足你的需求 06/15 00:29
susuyumi:1樓不好意思, 我打錯字了:p 不過elseif的話...想不透 06/15 01:09
ejialan:你給的例子雖然不會遇到 但是應該還有一個可能是b>a(4) 06/15 04:13
ejialan:這樣c維度應該是1x5 可以這樣[i,j]=sort([b a]);c=j==1 06/15 04:16
ejialan:不過這樣會是>=與< 不知道你合不合用 06/15 04:18
asklo:if b <= a(1) 06/15 07:12
asklo: c(1)=1; 06/15 07:13
asklo:elseif b > a(1) || b <= a(2) 06/15 07:13
asklo: c(2)=1; 06/15 07:13
asklo:elseif b > a(2) || b <= a(3) 06/15 07:15
asklo: c(3)=1; 06/15 07:15
asklo:else 06/15 07:15
asklo: c(4)=1; 06/15 07:16
asklo:end 06/15 07:16
asklo:c本來就是一個zero vector, 不用特定再去判斷給0 06/15 07:17
asklo:上述的 || 改成&&,打錯了~~ 06/15 07:19
hebe0320:c(min(find(b<a)))=1 呢? 06/15 17:20
hebe0320:不過是在b不會大於1的情況下唷~ 06/15 17:23
ak075:find 06/15 23:30