作者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