作者garth7642 (^_^)
看板MATLAB
標題[問題]關於有一點不一樣的奇偶數判斷
時間Thu Mar 1 01:32:06 2012
假設我讀的檔的內容是:
tt =
19.423581840019324
4.861449360003462
4.704568320012186
10.227351120018284
4.412657760010916
20.902648079980281
0.532732320003561
3.007112399980542
4.404040799985523
22.099134000018239
19.037711040014983
15.468532800005050
而現在我想要的是
如果是奇數,則取整數部分+1, 偶數則取整數部分+2
例: 19.423581840019324 --> 20
4.861449360003462 --> 6
10.227351120018284 -->12
目前我寫的程式是
if mod(floor(tt(:,1)),2)==1
tt(:,1)=floor(tt(:,1))+1
else
tt(:,1)=floor(tt(:,1))+2
end
但是這樣會變成 所有的值 都是取整數後+2
請問我是哪一個環節搞錯呢?
感謝解答
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.192.87
1F:推 sunev:mod(floor(tt(:,1)),2)==1 03/01 01:37
2F:→ garth7642:樓上是指錯在那一行嗎? 那請問應該要改成怎樣才會對呢? 03/01 01:48
3F:推 diva:錯在:吧 else會把你的tt"全部"改成+2 else改成elseif試試 03/01 10:31
4F:→ diva:手邊沒有matlab可以幫你驗證 如果還不行 可以試試看find 03/01 10:36
5F:→ ejialan:tt=floor(tt);a=mod(tt,2)==1;tt(a)=tt(a)+1; 03/01 12:18
6F:→ ejialan:tt(~a)=tt(~a)+2; 你的寫法if後面接的是向量 他會把裡面的 03/01 12:20
7F:→ ejialan:值作and運算 所以全部都會進else 03/01 12:21
8F:→ garth7642:3Q我等等就去試試 感恩 03/01 22:39
9F:→ bwubai:tt_temp = floor(tt); 03/02 09:57
10F:→ bwubai:t1 = (mod(tt_temp,2)==1).*tt_temp + 1 03/02 10:00
11F:→ bwubai:t2 = mod(tt_temp,2)==0 .* tt_temp + 2 03/02 10:01
12F:→ bwubai:result_tt = t1 + t2 03/02 10:01
13F:→ garth7642:抱歉回的比較慢@@ 我試過了確定可以,感謝解答的大家 03/03 14:00