[問題]關於有一點不一樣的奇偶數判斷

看板MATLAB作者 (^_^)時間14年前 (2012/03/01 01:32), 編輯推噓2(2011)
留言13則, 5人參與, 最新討論串1/1
假設我讀的檔的內容是: 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

03/01 01:37, , 1F
mod(floor(tt(:,1)),2)==1
03/01 01:37, 1F

03/01 01:48, , 2F
樓上是指錯在那一行嗎? 那請問應該要改成怎樣才會對呢?
03/01 01:48, 2F

03/01 10:31, , 3F
錯在:吧 else會把你的tt"全部"改成+2 else改成elseif試試
03/01 10:31, 3F

03/01 10:36, , 4F
手邊沒有matlab可以幫你驗證 如果還不行 可以試試看find
03/01 10:36, 4F

03/01 12:18, , 5F
tt=floor(tt);a=mod(tt,2)==1;tt(a)=tt(a)+1;
03/01 12:18, 5F

03/01 12:20, , 6F
tt(~a)=tt(~a)+2; 你的寫法if後面接的是向量 他會把裡面的
03/01 12:20, 6F

03/01 12:21, , 7F
值作and運算 所以全部都會進else
03/01 12:21, 7F

03/01 22:39, , 8F
3Q我等等就去試試 感恩
03/01 22:39, 8F

03/02 09:57, , 9F
tt_temp = floor(tt);
03/02 09:57, 9F

03/02 10:00, , 10F
t1 = (mod(tt_temp,2)==1).*tt_temp + 1
03/02 10:00, 10F

03/02 10:01, , 11F
t2 = mod(tt_temp,2)==0 .* tt_temp + 2
03/02 10:01, 11F

03/02 10:01, , 12F
result_tt = t1 + t2
03/02 10:01, 12F

03/03 14:00, , 13F
抱歉回的比較慢@@ 我試過了確定可以,感謝解答的大家
03/03 14:00, 13F
文章代碼(AID): #1FJc4Qig (MATLAB)