xyq001303 发表于 2010-10-26 10:37:49

帮我看一个程序,给这个程序求出的矩阵赋予个名称

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-26 20:58:34

本帖最后由 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]
查看完整版本: 帮我看一个程序,给这个程序求出的矩阵赋予个名称