[問題] if 可以用矩陣當判斷式嗎 已回收

看板MATLAB作者 (Kry)時間15年前 (2011/01/10 14:26), 編輯推噓2(2012)
留言14則, 4人參與, 最新討論串1/1
有 A1,A2,A3 三個 , 讀圖檔後再經運算的的320*256的矩陣 我想把矩陣內的元素一個一個比對當判斷 但卻一直跳不進if內 ,im為想運算的圖檔,以下為我寫的程式 if((A1<A2)&(A1>A3)&(A3>0.002)) im(:,:,1) = 255 ; im(:,:,2) = 255 ; im(:,:,3) = 255 ; else im(:,:,1) = 0 ; im(:,:,2) = 0 ; im(:,:,3) = 0 ; end 也就是說 當A1(1,1)<A2(1,1)&A1(1,1)>A3(1,1)&A3(1,1)>0.002 那im(1,1,1~3) = 255 把320*256個元素都這樣判斷比較後 把im的值替換 想了好久都不得其解 用偵錯發現他根本沒辦法跳進if跑im(1,1,1~3) = 255 卻可以跑else內的運算 請問要怎麼解決 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.234.90

01/10 14:53, , 1F
A1(:,:)<A2(:,:) & A1(:,:)>A3(:,:) & A3>0.002
01/10 14:53, 1F

01/10 15:00, , 2F
A1(:)即可
01/10 15:00, 2F

01/10 16:41, , 3F
謝謝DK的回答 試過此方法 但是還是跳不進 if內的運算式
01/10 16:41, 3F
※ 編輯: ldiafye 來自: 118.160.234.90 (01/10 16:44)

01/10 16:55, , 4F
if內的不行運算else卻跑得進去但需要兩個都跑進去才行Q_Q
01/10 16:55, 4F

01/10 19:23, , 5F
if(A1<A2) 這種矩陣判斷需要所有元素皆符合才會為 true
01/10 19:23, 5F

01/10 19:58, , 6F
或許可以用 find((A1<A2)&(A1>A3)&(A3>0.002)) 來找出符合的
01/10 19:58, 6F

01/10 19:58, , 7F
索引值,然後再傳給 im(:,:,1:3) 去設定
01/10 19:58, 7F

01/10 21:10, , 8F
謝謝B大提醒 矩陣判斷式方法 改用迴圈一個一個判斷 是OK的
01/10 21:10, 8F

01/10 22:15, , 9F
應該不需要用到迴圈吧....
01/10 22:15, 9F

01/10 22:36, , 10F
id=find((A1<A2)&(A1>A3)&(A3>0.002));
01/10 22:36, 10F

01/10 22:36, , 11F
A1(id) = 255; 這樣可不用迴圈,大矩陣應該會快上非常多
01/10 22:36, 11F

01/11 13:18, , 12F
設A=(A1<A2)&(A1>A3)&(A3>0.002); B=cat(3,A,A,A);
01/11 13:18, 12F

01/11 13:18, , 13F
B*255 這樣應該就是你要的吧?
01/11 13:18, 13F

01/11 19:00, , 14F
是我要的 沒錯! 程式簡潔多了 程式博大精深阿~ TKS
01/11 19:00, 14F
文章代碼(AID): #1DAgQDx1 (MATLAB)
文章代碼(AID): #1DAgQDx1 (MATLAB)