[問題] 不用if來分類的方法

看板MATLAB作者 (保羅太陽)時間5年前 (2019/05/02 14:25), 5年前編輯推噓4(403)
留言7則, 3人參與, 5年前最新討論串1/1
各位版上大腿們好 我的情況是有三組數值為0,1的矩陣 例如: A = [1 0 1 0 1 1 0]; B = [0 1 0 1 0 0 1]; O = [1 0 0 1 1 0 0]; 我想要將以下四種情況 A=1 , B=1 A=1 , B=0 A=0 , B=1 A=0 , B=0 對應到的O矩陣資料存下來 目前使用的方法是直接用if else來分 但這樣的寫法我電腦跑起來時間真的耗費太久 因為我每組數據有65536筆... 然後有60組左右 苦思想不太到更好的方式 所以希望上來能得到各位前輩們的指點 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.40.106 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1556778341.A.760.html

05/02 14:29, 5年前 , 1F
find( (A==1).*(B==1) )
05/02 14:29, 1F

05/02 14:34, 5年前 , 2F
沒寫很請處,把出來的index餵給O就好。O(find(...))
05/02 14:34, 2F

05/02 14:40, 5年前 , 3F
用 & 語義比較清楚
05/02 14:40, 3F

05/02 14:58, 5年前 , 4F
同意。 A==1 & B==1 這樣清楚也快
05/02 14:58, 4F
謝謝各位的教學! 剛剛馬上試了沒問題 速度也快超多Orz... 太感謝了! ※ 編輯: boa918ass (140.115.40.106), 05/02/2019 15:11:52

05/02 21:07, 5年前 , 5F
直接 O(A==1 & B==1)就好 記得之前寫find時matlab都自動
05/02 21:07, 5F

05/02 21:07, 5年前 , 6F
建議我不用用find
05/02 21:07, 6F

05/02 21:19, 5年前 , 7F
最好是直接把A和B存成logical,這樣就可以O(A&B) O(A&~B)
05/02 21:19, 7F
感謝各位提供方法~ 會再試試看! ※ 編輯: boa918ass (220.141.93.175), 05/04/2019 01:14:51
文章代碼(AID): #1SoerbTW (MATLAB)
文章代碼(AID): #1SoerbTW (MATLAB)