今天是入门matlab语言的第八天,总是纠结在matlab语言的矩阵和其他编程语言的数据结构之间的转换;还是没啥头绪,可能是受到java、python等常规语言的编程习惯的限制,在我看来觉得有点像多维数组的实现,可是它的存储结构又有点困惑,所以还是继续慢慢渐悟吧!!保持手感,继续GUI编程:
简单科学计算器的实现:效果图:
步入正题:
第一步依然完成layout布局(代码控制或者可视化拖拽)比较简单
第二部:各个控件的callback函数的编写:
在matlab中对GUI的编程很快捷,类似于Android的按钮一样,数字按钮每一个获取编辑框的内容,并进行字符的拼接,strcat();
实例:按钮1:注意每一个控件的标识:tag一一对应
function num1_Callback(hObject, eventdata, handles)
% hObject handle to num1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString = get(handles.editshowresult,'String');
textString =strcat(textString,'1');
set(handles.editshowresult,'String',textString)
其他的按钮以此类推;另外就是重点的按键实现还有“”清空“、‘退格’、“等于”这三个符号的实现
1.清空:可以先获取编辑框的内容,再进行赋值为空字符串即可;
function clear_Callback(hObject, eventdata, handles)
% hObject handle to clear (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.editshowresult,'String','')
2.退格:同样先获取编辑框已有内容和长度,进行字符减1的操作之后再进行赋值操作;
function back_Callback(hObject, eventdata, handles)
% hObject handle to back (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString = get(handles.editshowresult,'String');
n=length(textString)
t=char(textString)
textString=t(1:n-1)
set(handles.editshowresult,'String',textString)
3.等于:等于符号这个是一个很大的亮点啊在python中我们知道eval()函数对输入的字符串进行数值计算操作,这里同样是一样呢使用,想想Android 中的计算器,等于号的计算操作,那可是给个大活哈,即使是GitHub的开源轮子
% --- Executes on button press in equal.
function equal_Callback(hObject, eventdata, handles)
% hObject handle to equal (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString = get(handles.editshowresult,'String');
result =eval(textString);
set(handles.editshowresult,'String',result)
总结:matlab的用户界面设计只要是保存为m文件和fig图像文件;两者分离开,也体现出一点界面与代码分开的思想;比较来说就是有点顺手,同时也真正体会到matlab语言的健壮与科学计算的优越性。