Matlab-GUI程序 界面实时显示命令行中运行过程

Matlab-GUI程序 界面实时显示命令行中运行过程

在Matlab的GUI程序开发中,我们常常先测试完成部分的代码构成一个函数脚本,将来以便在最终GUI开发时直接调用函数。

这种开发思路没有任何问题,也很高效,代码也很简洁。博主本人也是这么做的。

但这样做其实是存在一个很严重的问题:函数调用只负责输出最终结果,中间的执行过程是不做任何显示的。

当然,如果本身运算量小无可厚非。当程序进行大量运算时,界面不做任何显示,真心无奈怀疑是不是出了BUG,卡住不动了??!!

因此,我们此时是需要在GUI界面对运行状态做显示的。不然,只能在在命令行中看到运行过程了…这其实是一件很不友好的事情~

解决方法:
这个问题也困扰了我几天,最后我是下面的方法解决的,如有更好的解决思路,欢迎评论~
我们需要把函数的代码稍作修改粘贴到需要执行的GUI脚本中。

修改1:
去掉 functionend,只用中间包裹的部分。
对于函数输入的参数要以代码赋值的形式提前补充到代码开头。同样,函数的输出也要做相应处理。
如果函数参数和输出的变量名在GUI使用时变量名时同样的,那么,可以忽略修改1

修改2:
由于,计算机程序运行速度很快,我们需要在适当的地方【使用pause函数】“暂停”。以保证GUI可以正确的显示运行过程。

下面举个栗子~
原函数代码:

function [f] = knn_opera(a,b,c,d)
%---------省略一堆代码
for h=3:len%遍历测试点
    disp(strcat("测试点[",num2str(h),"]运算完成"));
end
disp(strcat("测试运算完成"));
end

修改后:(注:a1,b1,c1,d1,f1为GUI脚本中使用的变量,handles.text3为GUI显示的部分的ID)

a=a1;
b=b1;
c=c1;
d=d1;
%---------省略一堆代码
for h=3:len%遍历测试点
    disp(strcat("测试点[",num2str(h),"]运算完成"));
    pause(1);
    state_str=strcat("测试点[",num2str(h),"]运算完成");
    set(handles.text3,'string',state_str);
end
disp(strcat("测试运算完成"));
pause(1);
state_str=strcat("测试运算完成");
set(handles.text3,'string',state_str);
f1=f;

然后将修改后的代码粘贴到需要的地方即可。

另外,一个Matlab代码排版格式化的小tips:Ctrl+a Ctrl+i

写完了,撒花~

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值