Program to find the median of the matrix (need to use for loop)
Ältere Kommentare anzeigen
Hi,
I need to make a progrqam for the following logic:
1. Consider a matrix of size 120x120. Now consider a section of 3x3 and find the median of the 3x3 section, replacing the values of the matrix to make a new matrix (of a smaller size). The new 3x3 section will be taking the next element as the central element.
2. Please see that there is a command in MATLAB, called medfilt, medfilt2, which does the same, but I need to develop a program which does this manually i.e. it first sorts our the elements in ascending or descending order and then selects the middle value as the median thereby forming a new matrix with the median values.
The program that I am building is more complex than the section which I need help on. Any help in deleveloping this program will be highly appreciated.
Thanks and Regards
Manpreet Kaur
2 Kommentare
bym
am 17 Apr. 2011
what have you tried so far?
Paulo Silva
am 17 Apr. 2011
interesting homework!
Antworten (2)
Andrei Bobrov
am 17 Apr. 2011
variant % size(Min) = [m1 n1], size(Msection) = [m2 n2]
mn1 = size(Min)+2;
Min1 = zeros(mn1);
Min1(2:end-1,2:end-1) = Min;
Mout = zeros(mn1-2);
IJ = arrayfun(@(x)subsref(buffer(1:x,3,2),struct('type','()','subs',{{':',3:x}})),mn1,'UniformOutput', false);
[I,J] = IJ{:};
for ii = 1:length(I)
for jj = 1:length(J)
Mout(ii,jj) = median(median(Min1(I(:,ii),J(:,jj))));
end
end
as in the previous variant without a loop (as in medfilt2)
mn1 = size(Min)+2;
Min1 = zeros(mn1);
Min1(2:end-1,2:end-1) = Min;
IJ = arrayfun(@(x)subsref(buffer(1:x,3,2),struct('type','()','subs',{{':',3:x}})),mn1,'Un', false);
[I,J] = IJ{:};
[j3,i3] = meshgrid((1:mn1(2)-2),(1:mn1(1)-2));
Mout = arrayfun(@(x,y)median( reshape(Min1(I(:,x),J(:,y)),[],1)),i3,j3);
2 Kommentare
Manpreet Kapoor
am 18 Apr. 2011
Andrei Bobrov
am 18 Apr. 2011
analogy to your task: m1 = 120, n1 = 120, m2 = 3, n2 = 3
Manpreet Kapoor
am 21 Apr. 2011
0 Stimmen
3 Kommentare
Matt Fig
am 22 Apr. 2011
Perhaps (I hope) Anderei left some things out because this is YOUR homework problem and you should do at least some of it yourself.
This site is not a homework solution service....
Show some work of your own....
Manpreet Kapoor
am 27 Apr. 2011
Sean de Wolski
am 27 Apr. 2011
I wouldn't want to take a class taught by someone who: A) doesn't know how to follow instructions (this post, and your identical duplicate post) and B) Can't read documentation. $0.02
Kategorien
Mehr zu Polynomials finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!