[問題] Matlab的問題已回收

看板MATLAB作者 (夏夜晚風)時間15年前 (2009/04/11 01:00), 編輯推噓6(607)
留言13則, 8人參與, 最新討論串1/1
假設我有一個N*1的矩陣 例如 a=[69.1194,67.4679,65.8165,62.5136,60.8596,59.2157,55.9078]; 有一個值假設是c=67.4679 我要找a這個矩陣有沒有這個值,有的話傳回b=1; 我的code for i=1:length(a) if a(i)==c b=1; else b=0; end 這樣雖然可以!但我想問有沒有比較好的方法!也就是比這個方法快的! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.136.15

04/11 02:07, , 1F
b=any(a==c)
04/11 02:07, 1F

04/11 02:08, , 2F
順帶一提,你的if跟else沒有break,所以最後的結果會只是
04/11 02:08, 2F

04/11 02:08, , 3F
最後一個element有沒等於c
04/11 02:08, 3F

04/11 09:52, , 4F
Sorry 我打錯了少打一個end
04/11 09:52, 4F

04/11 11:00, , 5F
重點不是end啦,是要加break
04/11 11:00, 5F

04/11 11:06, , 6F
if find(a==64.4679),b=1,end; 這樣嗎?
04/11 11:06, 6F

04/11 11:34, , 7F
或許要寫成 if isempty(find a==c) ~= 0
04/11 11:34, 7F

04/11 12:47, , 8F
加個範圍好了,用==來找浮點數風險太大了
04/11 12:47, 8F

04/11 13:42, , 9F
推樓上, MATLAB 最有名的 0.1+0.1+0.1 != 0.3
04/11 13:42, 9F

04/11 19:21, , 10F
廁所大大 能請你解釋一下嗎? ~"~ 我不大懂
04/11 19:21, 10F

04/11 19:23, , 11F
哈哈 我知道了 謝謝 ;-P
04/11 19:23, 11F

04/12 10:51, , 12F
真的要加範圍喔!! 我小時候被這個婊過
04/12 10:51, 12F

04/12 11:08, , 13F
if ~isempty(find(abs(a-c)<1e-5)) b=1;end;
04/12 11:08, 13F
文章代碼(AID): #19ttiR1p (MATLAB)