matrix, window finding median....

2 次查看(过去 30 天)
Manpreet Kapoor
Manpreet Kapoor 2011-4-21
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
  4 个评论
Manpreet Kapoor
Manpreet Kapoor 2011-4-22
I wouldn't have if I got the answer, Sorry for inconvenience.
Walter Roberson
Walter Roberson 2011-5-13
duplicates http://www.mathworks.com/matlabcentral/answers/5656-program-to-find-the-median-of-the-matrix-need-to-use-for-loop

请先登录,再进行评论。

回答(3 个)

Sean de Wolski
Sean de Wolski 2011-4-21
doc blkproc
doc blockproc
  1 个评论
Manpreet Kapoor
Manpreet Kapoor 2011-4-21
hi,
Actually I am new to MATLAB and I have already gone through this command. But I am unable to develop a program to achieve the sorting and finding median of the window elements.
I need step by step guidance to develop the above logic.
Please help.
Thanks and Regards
Manpreet Kaur

请先登录,再进行评论。


Sean de Wolski
Sean de Wolski 2011-4-21
Well what are the steps? First you have to sort:
doc sort
then you have to extract the middle value
xmiddle = x(floor(numel(x)/2))
If you can't figure it out from here; ask your professor because they're either failing to teach you properly, or you're sleeping during class.
  3 个评论
Manpreet Kapoor
Manpreet Kapoor 2011-4-22
BY the way, I need to ask one more thing, The command u gave does not select 2 values if the sequence is of even numbers. I actually need the program to find the median of the elements in the window.
Thanks and Regards
Manpreet Kaur
Sean de Wolski
Sean de Wolski 2011-4-22
How are you going to replace one value with two median values in the even that it's even? Also, how can you have an even number of elements in a square window (i.e. a window with even sides centered on one pixel) It will always be odd (one per side=> 3*3=9; two per side => 5*5 = 25 etc.)
PS. A kind word of advice for learning MATLAB is to learn to use the built-in/stock functions and to read/understand the documentation related to them. This will get you much further and save time as there is no reason to reinvent the wheel.

请先登录,再进行评论。


Andrei Bobrov
Andrei Bobrov 2011-4-22
variant (as in medfilt2)
x = randi(125,3);% input array
x = sort(x(:));
I = numel(x)/2;
if rem(I,1), y = x(ceil(I));
else y = sum(x(floor(I)+ [0 1]))/2; end

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by