zheng720 发表于 2007-9-6 20:10

关于两种方式下程序运行不正常的问题

版主和eight(八)及各位高手我想问一下我的代码可以在编辑的M文件里正常运行,但是怎么我将代码添加到GUI里之后就会出错!
下面是我的一部分代码,请帮忙看一下。谢谢!代码有点长,但是还请高手帮忙看看,我这里先谢了,真是急死我了!
a=imread('1.bmp');
b=imread('2.bmp');
N1=40;      %模板大小
N2=size(a);   %图象大小
N=20;         %搜索区
n=2*N+1;      %搜索范围
qs=58;      %区域起始点
js=70;      %区域结束点
bj=1;         %计算步进   
U=zeros(N2);
V=zeros(N2);
for a0=qs:bj:js;
    for b0=qs:bj:js;
      a1=a((a0-N1/2):(a0+N1/2),(b0-N1/2):(b0+N1/2));
c=zeros(1,n^2);
G=zeros(n);
k=0;
for uz=-N:N
    for vz=-N:N
      b1=b((a0-N1/2+uz):(a0+N1/2+uz),(b0-N1/2+vz):(b0+N1/2+vz));
      k=k+1;
      c(k)=corr2(a1,b1);
    end
end
k=0;
for i=n:-1:1
    for j=1:n
      k=k+1;
      G(i,j)=c(k);
    end
end
max_c=max(c);
B=find(c==max_c);
if mod(B,n)==0
    uz=fix(B/n)-N-1;
    vz=N;
else
    uz=fix(B/n)-N;
    vz=mod(B,n)-N-1;
end
max_G=max(max(G));
=find(G==max_G);
ds=3;
G1=G(Gx-ds:Gx+ds,Gy-ds:Gy+ds);
=meshgrid(0:0.01:2*ds+1);
z=interp2(G1,xi,yi,'*spline');%灰度插值
max_z=max(max(z));
=find(z==max_z);
=find(z==max_G);
V(a0,b0)=uz+(zGx-zx)*0.01;   %V代表行方向的位移,即Y方向
U(a0,b0)=vz+(zy-zGy)*0.01;   %U代表列方向的位移,即X方向
    end
end
x1=V(a0,b0);
y1=U(a0,b0);
U=U(qs:js,qs:js);
V=V(qs:js,qs:js);
meanU=mean(mean(U));
maxU=max(max(U));
minU=min(min(U));
stdU=std2(U);
meanV=mean(mean(V));
maxV=max(max(V));
minV=min(min(V));
stdV=std2(V);
% figure,quiver(U,V)          %这是我用单独用M文件编译之后产生的图像,这种情况下是可以正常运行的
% xlabel('x方向(pixel)');
% ylabel('y方向(pixel)');
% title('位移场');
axes(handles.axes4);   %这是我把上面代码加到GUI的按钮callback里之后再产生图像,但是这种情况下就会出错,错误如下
imshow(plot(quiver(U,V)))
xlabel('x方向(pixel)');
ylabel('y方向(pixel)');

%%%%%%错误
??? Error using ==> plot
Not enough input arguments.
Error in ==> displacementstrain>filed_Callback at 280
imshow(plot(quiver(U,V)))
Error in ==> gui_mainfcn at 95
      feval(varargin{:});
Error in ==> displacementstrain at 42
    gui_mainfcn(gui_State, varargin{:});
??? Error using ==> displacementstrain('filed_Callback',gcbo,[],guidata(gcbo))
Error using ==> plot
Not enough input arguments.

[ 本帖最后由 zheng720 于 2007-9-6 20:15 编辑 ]

zheng720 发表于 2007-9-6 21:27

问题已解决,只需将imshow(plot(quiver(U,V)))改成quiver(U,V),就可以正常显示了!
不过我还想问个问题,就是怎么保存axes里的图像,就是我上面产生的图像怎么保存呀!我搜过了,觉得讲的不是很详细,能不能请再讲详细点!谢谢!

eight 发表于 2007-9-6 22:01

原帖由 zheng720 于 2007-9-6 21:27 发表 http://www.chinavib.com/forum/images/common/back.gif
问题已解决,只需将imshow(plot(quiver(U,V)))改成quiver(U,V),就可以正常显示了!
不过我还想问个问题,就是怎么保存axes里的图像,就是我上面产生的图像怎么保存呀!我搜过了,觉得讲的不是很详细,能不能请 ...

两种方法,我已经回复过无数次了,再认真搜索一下吧。注意,应先得到该 axes 的句柄,再进行保存

[ 本帖最后由 eight 于 2007-9-6 22:08 编辑 ]
页: [1]
查看完整版本: 关于两种方式下程序运行不正常的问题