matrix, window finding median....

1 回表示 (過去 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

カテゴリ

Help Center および File ExchangeSmoothing and Denoising についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by