Re: [問題] 矩陣內值取代的問題已回收
首先感謝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
討論串 (同標題文章)