看板 MATLAB 關於我們 聯絡資訊
假設我讀的檔的內容是: 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
sunev:mod(floor(tt(:,1)),2)==1 03/01 01:37
garth7642:樓上是指錯在那一行嗎? 那請問應該要改成怎樣才會對呢? 03/01 01:48
diva:錯在:吧 else會把你的tt"全部"改成+2 else改成elseif試試 03/01 10:31
diva:手邊沒有matlab可以幫你驗證 如果還不行 可以試試看find 03/01 10:36
ejialan:tt=floor(tt);a=mod(tt,2)==1;tt(a)=tt(a)+1; 03/01 12:18
ejialan:tt(~a)=tt(~a)+2; 你的寫法if後面接的是向量 他會把裡面的 03/01 12:20
ejialan:值作and運算 所以全部都會進else 03/01 12:21
garth7642:3Q我等等就去試試 感恩 03/01 22:39
bwubai:tt_temp = floor(tt); 03/02 09:57
bwubai:t1 = (mod(tt_temp,2)==1).*tt_temp + 1 03/02 10:00
bwubai:t2 = mod(tt_temp,2)==0 .* tt_temp + 2 03/02 10:01
bwubai:result_tt = t1 + t2 03/02 10:01
garth7642:抱歉回的比較慢@@ 我試過了確定可以,感謝解答的大家 03/03 14:00