帮我看一个程序,给这个程序求出的矩阵赋予个名称
function imgrad=shiyan1a=imread('klj.jpg');imshow(a);=ginput(2);x=round(x);y=round(y);n1=abs(x(1)-x(2))+1;n2=abs(y(1)-y(2))+1;=max();imgrad=ones(3,n);for i=1:3 b=a(:,:,i); if y(1)<y(2)&&x(1)<x(2) if which_max==1 xx=x(1):x(2); yy=subf(x,y,xx); else yy=y(1):y(2); xx=subf(x,y,yy); end elseif y(1)<y(2)&&x(1)>x(2) if which_max==1 xx=x(2):x(1); yy=subf(x,y,xx); else yy=y(1):y(2); xx=subf(x,y,yy); end elseif y(1)>y(2)&&x(1)<x(2) if which_max==1 xx=x(1):x(2); yy=subf(x,y,xx); else yy=y(2):y(1); xx=subf(x,y,yy); end elseif y(1)>y(2)&&x(1)>x(2) if which_max==1 xx=x(2):x(1); yy=subf(x,y,xx); else yy=y(2):y(1); xx=subf(x,y,yy); end end ind=sub2ind(size(b),yy,xx); data=b(ind); data=double(data); imgrad(i,:)=gradient(data);endfunction coordinate=subf(x,y,input)k=(y(1)-y(2))/(x(1)-x(2));if abs(x(1)-x(2))>=abs(y(1)-y(2)) coordinate=k*(input-x(1))+y(1); coordinate=round(coordinate);else coordinate=(input-y(1))/k+x(1); coordinate=round(coordinate);end 以上代码是用来给图片求颜色变化梯度的,求出来的是一个3行n列的矩阵,我想给这个矩阵赋予一个名称,方便后面对其进行操作,但是不知道该怎么添加代码,请高手解惑,谢谢!!! 本帖最后由 messenger 于 2010-10-27 20:30 编辑真服了,怎么贴出来的代码没有换行呢?
如果想给求出来的矩阵赋一个名,只要在调用函数前面加=号就可以了。
比如,你将这段程序存为shiyan.m文件,在调用时用 x=shiyan,就把求出来的矩阵赋成 x 这个矩阵名了。
建议你找一本基础的Matlab书,看看函数调用方面的内容。
function imgrad=shiyan1
a=imread('klj.jpg');
imshow(a);
=ginput(2);
x=round(x);
y=round(y);
n1=abs(x(1)-x(2))+1;
n2=abs(y(1)-y(2))+1;
=max();
imgrad=ones(3,n);
for i=1:3
b=a(:,:,i);
if y(1)<y(2)&&x(1)<x(2)
if which_max==1
xx=x(1):x(2);
yy=subf(x,y,xx);
else
yy=y(1):
y(2);
xx=subf(x,y,yy);
end
elseif
y(1)<y(2)&&x(1)>x(2)
if which_max==1
xx=x(2):x(1);
yy=subf(x,y,xx);
else
yy=y(1):y(2);
xx=subf(x,y,yy);
end
elseif y(1)>y(2)&&x(1)<x(2)
if which_max==1
xx=x(1):x(2);
yy=subf(x,y,xx);
else
yy=y(2):y(1);
xx=subf(x,y,yy);
end
elseif y(1)>y(2)&&x(1)>x(2)
if which_max==1
xx=x(2):x(1);
yy=subf(x,y,xx);
else
yy=y(2):y(1);
xx=subf(x,y,yy);
end
end
ind=sub2ind(size(b),yy,xx);
data=b(ind);
data=double(data);
imgrad(i,:)=gradient(data);
end
function coordinate=subf(x,y,input)
k=(y(1)-y(2))/(x(1)-x(2));
if abs(x(1)-x(2))>=abs(y(1)-y(2))
coordinate=k*(input-x(1))+y(1);
coordinate=round(coordinate);
else
coordinate=(input-y(1))/k+x(1);
coordinate=round(coordinate);
end
页:
[1]