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);
运行后不能出现幅度谱和相位谱。求大神看一下哪里错误了? 展开
[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个回答
展开全部
代码不完整,不好判断。
1、pushbutton2的callback中,x、y分别是什么?需要注意,各回调函数有其独立的工作区,pushbutton1的callback中的变量对于pushbutton2而言是不可见的。
2、确定GUI中有tag为axes3、axes4的坐标系?
3、注意观察Command Window里面有没有报错信息?
4、可以在合适的位置设置断点,跟踪程序的运行,这也是调试程序的基本做法。
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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询