【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)

李萨如图形( Lissajous-figure)

在振动学中,相互垂直的两简谐振动合成时,如果两简谐振动的频率相同,则可形成稳定的椭圆曲线,极端条件为圆和直线;而当两相互垂直的简谐振动频率不同时,合成运动比较复杂,其运动轨迹一般不闭合,但当两分振动频率成简单的整数比时,其合成运动的轨迹则为封闭曲线,因由法国物理学家朱尔·利萨茹在1857年作更详细研究而得名,故称为李萨如图形( Lissajous-figure)。而相互垂直的两任意振动的合成运动轨迹图形,则称为广义李萨如图形
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第1张图片

【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第2张图片
图片来自维基百科

使用Matlab GUI写APP

参考官网教程:使用 GUIDE 创建简单的 App

  1. 通过在 MATLAB 提示符后键入 guide 来启动 GUIDE,或者新建APP中启动
    【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第3张图片

  2. 在“GUIDE 快速入门”对话框中,选择 Blank GUI (Default) 模板,然后点击确定。已有的GUI在箭头处打开。
    【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第4张图片

  3. 点击选择文件 > 预设 > GUIDE。在组件选项板中显示组件的名称前打勾,点击确定。
    【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第5张图片

UI 布局

  1. 从布局编辑器左侧的组件选项板中选择工具,并将其拖到布局区域内,即可创建。
    【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第6张图片
  2. 双击组建可以修改属性,修改string、backgroundcolor属性、fontsize等。
    【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第7张图片
  3. 布局完毕后点击运行图形,提示要保存,
    【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第8张图片
  4. GUIDE 会保存 fig 和 m 文件,fig是UI界面,m是代码文件。运行结果:
    【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第9张图片【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第10张图片

为 App 的行为编写代码

行为有:

  1. 拖动滑动条,在右侧框显示数据。图形实时变化。
  2. 在右框输入数据,点击RUN,图形变化。
  3. 在axes1坐标轴上显示合成的李萨如图形。

编写

一. 鼠标右击n滑动条,Callback,跳到m文件滑动条对于的代码。
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第11张图片
二. 在%handle下添加以下代码:
其中edit1就是右框,查看tag,tag也可自己修改,它组件的ID名。

global n;
n = get(hObject,'Value');
set(handles.edit1, 'string',n);

如图:
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第12张图片
同样对滑动块2,callback,添加以下代码:

global fai;
fai = get(hObject,'Value');
set(handles.edit2, 'string',fai);

改滑动块最大值最小值:

  1. n滑动块属性中设置max = 10, min = 0
  2. fai中 max = 10,min = 0

运行验证:
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第13张图片
三、 鼠标右击Callback edit1\edit2 ,分别添加代码:

global n;
n=str2double(get(hObject,'string'));
global fai;
fai=str2double(get(hObject,'string'));

如图:
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第14张图片
四、 鼠标右击Callback run按钮 ,添加代码:

global n;
global fai;

t=0:0.001:10;
x=sin(t);
y=sin(n*t+fai);
axes(handles.axes1);
grid on;axis equal;
plot(x,y);

【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第15张图片
我们希望拉滑动块时也能实时响应,所以在滑动块callback后加上:

pushbutton1_Callback(hObject, eventdata, handles)  %调用按键函数

【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第16张图片

运行结果

【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第17张图片
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第18张图片
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第19张图片
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第20张图片
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第21张图片
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第22张图片
【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第23张图片
另外只要把plot(x,y)改为comet(x,y),可看到动态绘制效果:

【Matlab】手把手教你用Matlab GUIDE画李萨如图形(完整教程)_第24张图片
版权所有,谢绝转载。
完。

你可能感兴趣的:(Matlab)