按按钮摘要计算

18次观点(过去30天)
tran luan.
tran luan. 2021年8月9日11点10分
回答: 图像分析师 在2021年8月10日在1:20
您好,我在Matlab 2020b中有一个问题
输入很好,但是当我分配按钮时,没有执行数学计算,请帮助
执行程序来记录从1到6的编辑是好的,但是ts,fs,m,c,…当我按下按钮时,等等都没有被计算出来,这里发生了什么?
函数varargout = gui(varargin)
GUI.fig%GUI MATLAB代码
%最后一次修改by GUIDE v2.5 09-Aug-2021 14:32:49
函数edit1_Callback (hObject eventdata处理)
fc = str2double (get (handles.edit1,'细绳'));
Assivein(“基地”“俱乐部”,FC);
函数edit2_Callback (hObject eventdata处理)
fm = str2double(get(handles.edit2,'细绳'));
Assivein(“基地”'调频',调频);
函数Edit3_callback(fhref,eventdata,handles)
fd = str2double(get(handles.edit3,'细绳'));
Assivein(“基地”“fd”,FD);
函数Edit4_callback(fhref,eventdata,handles)
b = str2double(get(handles.edit4,'细绳'));
Assivein(“基地”'B',b);
函数Edit5_callback(fhref,eventdata,handles)
am = str2double(get(handles.edit5,'细绳'));
Assivein(“基地”“我”,是);
函数Edit6_callback(fhref,eventdata,handles)
ac = str2double(get(handles.edit6,'细绳'));
Assivein(“基地”'ac'、交流);
函数按钮1_callback(fhref,eventdata,handles)
全球的FC FM FD B AM;
ts = 1 / (10 * fc);
fs = 1 / ts;
T = 0:1 / FS:0.5;
m = am * cos(2 * pi * fm * t);%信息
c = ac * cos(2 * pi * fc * t);%载体
Y = FMMOD(M,FC,FS,FD);%调制
z = fmdemod (y, fc, fs, fd);%解调
3评论
rik.
rik. 2021年8月9日16:31
你有什么证据证明代码没有执行?注意,它是一个函数,并且有自己的工作区。您将不会(也不应该)看到在基本工作区中发生任何事情。

登录评论。

答案(2)

1月
1月 2021年8月9日23:10
Assivein(“基地”'ac'、交流);
您将在基本工作区中创建变量Ac。如果您之前没有在基本工作空间中将此变量声明为全局变量,那么它是存在的,但不是全局变量。然后:
函数按钮1_callback(fhref,eventdata,handles)
全球的fc fm fd B Am Ac
创建AC作为全局变量,但这不会复制基础工作区中的值,当不是一个全局。
全局变量和 assignin 分发变量是非常糟糕的选择。混合它们更加令人困惑。
GUI的清洁用法将在内部存储变量,例如,在图形的UserData中或在处理程序中。
函数varargout = gui(varargin)
GUI.fig%GUI MATLAB代码
%最后一次修改by GUIDE v2.5 09-Aug-2021 14:32:49
函数edit1_Callback (hObject eventdata处理)
句柄。FC.= str2double(get(handles.edit1,'细绳'));
Guidata(令人厌流,处理);
函数edit2_Callback (hObject eventdata处理)
Handles.fm = str2double(get(handles.edit2,'细绳'));
Guidata(令人厌流,处理);
......等等
函数按钮1_callback(fhref,eventdata,handles)
ts = 1 / (10 * handles.fc);
fs = 1 / handles.ts;
t = 0:1 / handles.fs:0.5;
m =我* cos(2 *π* handles.fm * handles.t);%信息
c = ac * cos(2 * pi * handles.fc * handles.t);%载体
fs, y = fmmod (m, handles.fc handles.fd);%调制
z = fmdemod(y,handles.fc,fs,handles.fd);%解调
结尾
然后可以并行运行2个gui而不会产生任何混淆,因为值存储在图中。
alternativ是将变量声明为全局:
函数edit1_Callback (hObject eventdata处理)
全球的FC.
fc = str2double (get (handles.edit1,'细绳'));
结尾
函数edit2_Callback (hObject eventdata处理)
全球的调频
fm = str2double(get(handles.edit2,'细绳'));
结尾
......等等
函数按钮1_callback(fhref,eventdata,handles)
全球的fc fm fd B Am Ac
ts = 1 / (10 * fc);
fs = 1 / ts;
T = 0:1 / FS:0.5;
m = am * cos(2 * pi * fm * t);%信息
c = ac * cos(2 * pi * fc * t);%载体
Y = FMMOD(M,FC,FS,FD);%调制
z = fmdemod (y, fc, fs, fd);%解调
结尾
这样就不再有对基本工作空间的间接影响了,但是运行2个gui将无法工作,因为它们再次共享相同的值。
1条评论
tran luan.
tran luan. 在2021年8月10日在0:59
谢谢你的作品,非常有效地

登录评论。


图像分析师
图像分析师 在2021年8月10日在1:20
@to tran luan. ,设置一个断点,看看它是否在回调内。
如果没有,请检查GUIDE中的Tag,以确保它与回调函数具有完全相同的名称,但添加了_Callback。因为很有可能,如果不写进去,名字就不一样了。

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!