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

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);
运行后不能出现幅度谱和相位谱。求大神看一下哪里错误了?

代码不完整,不好判断。
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;

温馨提示:答案为网友推荐,仅供参考
相似回答