声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1122|回复: 2

[GUI界面] 关于两种方式下程序运行不正常的问题

[复制链接]
发表于 2007-9-6 20:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
版主和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));
[Gx,Gy]=find(G==max_G);
ds=3;
G1=G(Gx-ds:Gx+ds,Gy-ds:Gy+ds);
[xi,yi]=meshgrid(0:0.01:2*ds+1);
z=interp2(G1,xi,yi,'*spline');%灰度插值
max_z=max(max(z));
[zx,zy]=find(z==max_z);
[zGx,zGy]=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 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-9-6 21:27 | 显示全部楼层
问题已解决,只需将imshow(plot(quiver(U,V)))改成quiver(U,V),就可以正常显示了!
不过我还想问个问题,就是怎么保存axes里的图像,就是我上面产生的图像怎么保存呀!我搜过了,觉得讲的不是很详细,能不能请再讲详细点!谢谢!
发表于 2007-9-6 22:01 | 显示全部楼层
原帖由 zheng720 于 2007-9-6 21:27 发表
问题已解决,只需将imshow(plot(quiver(U,V)))改成quiver(U,V),就可以正常显示了!
不过我还想问个问题,就是怎么保存axes里的图像,就是我上面产生的图像怎么保存呀!我搜过了,觉得讲的不是很详细,能不能请 ...


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

[ 本帖最后由 eight 于 2007-9-6 22:08 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-12 06:29 , Processed in 0.077097 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表