Re: [問題] 矩陣內值取代的問題已回收

看板MATLAB作者 (思考中....)時間16年前 (2009/12/26 04:51), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
首先感謝p大的指點~ 讓我能夠順利找到所要的值 但後來改成自動抓取值時… 發生了點問題 所以把程式碼po上來請教各位了… b=A(1:3,1:3); %原本的大矩陣A(在下面) c=unique(b); %找出不連續的值 len=length(c); for i =1:len c(i,2)=size(find(b==c(i)),1); %找出出現的次數 end for i =1:len if c(i,2)==(max(c(:,2))); %最大值出現次數最多 c(1,3)=c(i,1); end if c(i,2)<3 c(i,4)=c(i,1); %出現次數小於三次的值 end end %希望能自動將值改掉存入d矩陣中 for i = 1:3 for j = 1:3 for k =1:len if b(i,j)==c(k,4) d(i,j)=c(1,3); else d(i,j)=b(i,j); end end end end 以上程式碼執行完後 得到如下的值 7 143 56 1 7 56 56 0 7 56 56 0 應該要有兩個值被改掉 卻只有一個值被改 還多出一行的數值… 麻煩大家了 >"< 無法得到我所想要的值如下所示 7 56 56 7 56 56 7 56 56 ※ 引述《likedoudou (思考中....)》之銘言: : 請問 : 假設我的A矩陣為 : 7 143 187 143 187 129 : 7 56 56 56 56 94 : 7 56 56 56 94 56 : 7 56 56 56 56 94 : 7 56 56 56 56 248 : 7 56 56 56 94 56 : 我希望用一個3*3的遮罩來做判斷 : 先看 : 7 143 187 : 7 56 56 : 7 56 56 : 計算裡面的值 有三個7,四個56,一個143,一個187 : 接著將裡面的值少於三個數量的都用最多數量的取代 : 如: : 7 56 56 : 7 56 56 : 7 56 56 : 接著往後三個看 : 143 187 129 : 56 56 94 : 56 94 56 : 會變成 : 56 56 56 : 56 56 56 : 56 56 56 : 請問如何做到這個結果? : for i=1:1:6 : for j=1:1:6 %總大小 : for m=1:1:3 %遮罩大小 : for n=1:1:3 : end : end : end : end : 需要做到四個迴圈嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.3.129
文章代碼(AID): #1BDINLAi (MATLAB)
文章代碼(AID): #1BDINLAi (MATLAB)