how to correct the error in finding neighbor pixels in an 3x3 window? how many input arguments for an max() function have?

1 次查看(过去 30 天)
I=[2 3 10 4 6; 1 4 7 5 3; 5 2 8 4 3;8 2 1 7 3;1 9 8 3 4;];
D = padarray(I,[1 1],0,'both');
[x y]=size(D);
m=1;
n=1;
for i=2:x-1
for j=2:y-1
I1(m,n)=max(max(D(i-1,j-1:j+1),D(i,j-1),D(i,j+1),D(i+1,j-1:j+1)));
n=n+1;
end
m=m+1;
n=1;
end
I1=I1(1:x-2,1:y-2);
error: Error using max Too many input arguments.
Error in sampl1 (line 9) I1(m,n)=max(max(D(i-1,j-1:j+1),D(i,j-1),D(i,j+1),D(i+1,j-1:j+1)));

回答(1 个)

ES
ES 2013-10-9
max ideally takes one argument, a vector or matrix and returns the maximum element(s) (elements in case the passed input is a matrix).
max also takes two arguments.
But foryour case, you can form a matrix x=[D(i-1,j-1:j+1),D(i,j-1),D(i,j+1),D(i+1,j-1:j+1)] and do a max on x like
max(x)
  3 个评论
Walter Roberson
Walter Roberson 2013-10-9
max can also take three arguments. When it is given 2 arguments, it always proceeds element-by-element. When it is given three arguments with the second argument empty, it uses the third as the dimension number to take the maximum over.

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by