MATLAB GUI里写的代码但是运行之后没有图,求解

pushbutton1的callback是这样的:[ba]=uigetfile('*.xlsx');A=xlsread(fullfile(a,b))x=A(:,1);y=... pushbutton1的callback是这样的:
[b a]=uigetfile('*.xlsx');
A=xlsread(fullfile(a,b))
x=A(:,1);
y=A(:,2);
axes(handles.axes1);
plot(x,y)
xlabel('时间/ms')
ylabel('A');
title('电流波形');
handles.data=y;
guidata(hObject, handles);

运行后可以从电脑中选择csv文件并且画出波形图,
pushbutton2的callback是这样的

M=321;
fs=1000;
dt=1/fs;
n=0:M-1;
a=fft(x,M);
mag=2*abs(y)/M;
pha=angle(y);
f=n*fs/M;
axes(handles.axes3);
plot(f,mag);
axes(handles.axes4);
plot(f,pha);
运行后不能出现幅度谱和相位谱。求大神看一下哪里错误了?
展开
 我来答
tianxiawulang
2016-05-21 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2630万
展开全部
代码不完整,不好判断。
1、pushbutton2的callback中,x、y分别是什么?需要注意,各回调函数有其独立的工作区,pushbutton1的callback中的变量对于pushbutton2而言是不可见的。
2、确定GUI中有tag为axes3、axes4的坐标系?
3、注意观察Command Window里面有没有报错信息?
4、可以在合适的位置设置断点,跟踪程序的运行,这也是调试程序的基本做法。
追问
程序就是这样的,pushbutton1是从电脑里读取csv文件的第一列第二列画出波形图,然后点击pushbutton2对他进行频谱分析,我不清楚要用什么代替那个原来的波形,可以用A吗?但是A代表的是那个矩阵数列。。比如说对一个信号x(t)=2sin(4πt)求频谱,可以用y=fft(x,N),因为是读取的数据所以不知道用什么代替
追答

两种做法:

1、把读文件的代码在pushbutton2的callback中重复一遍:

[b a]=uigetfile('*.xlsx');
A=xlsread(fullfile(a,b))
x=A(:,1);
y=A(:,2);

2、在pushbutton1的callback代码的最后保存变量:

handles.datax=x;
handles.datay=y;
guidata(gcbf, handles);

然后在pushbutton2代码的最前面获取:

handles = guidata(gcbf);
x=handles.datax;
y=handles.datay;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式