第一步:App
第二步:创建组件
第三步:修改组件参数
第四步:编写触发条件后执行代码
注意:两种触发:ed和ing
注意:触发函数的任何一个函数都要指明修改的组件参数,这是最为关键的。
比如要在app.UIAxes绘图,就必须在第一个参数指明。
同理,hold on也不能直接用,必须写为:
hold('组件名','on')
组件名可以在组件浏览器上找到, 并且每个组件有多个属性,可以通过点属性的方式修改或者获取对应参数。
举个例子:
一切准备就绪后,点击运行:
其效果就是,拖动滑块后,触发函数,将滑块的value传递给plot函数。
下面通过一个高斯函数的例子重复一遍这个过程:
代码:
% Value changed function: MeanSlider
function MeanSliderValueChanged(app, event)
% 均值
average = app.MeanSlider.Value;
%范围
Scale = int16(app.ScaleSlider.Value);
% 标准差
sigma = app.VarianceSlider.Value;
% 先限定三维图中的x,y轴坐标范围
% 先限定三维图中的x,y轴坐标范围
X = -Scale+1 : 1 : Scale-1;
Y = -Scale+1 : 1 : Scale-1;
Z = zeros( 2*Scale-1, 2*Scale-1 );
for row = 1 : 1 : 2*Scale-1
for col = 1 : 1 : 2*Scale-1
Z( row, col ) = ( X(row) - average ).^2 + ( Y(col) - average ).^2; % 均值(average, average)
end
end
% app.UIAxes.XLim=[-2*Scale 2*Scale];
% app.UIAxes.YLim=[-2*Scale 2*Scale];
Z = -Z / ( 2 * sigma^2 );
Z = exp(Z) / ( 2 * pi * sigma^2 );
% 显示高斯函数的三维曲面
surf(app.UIAxes,X, Y, Z);
end
% Value changed function: VarianceSlider
function VarianceSliderValueChanged(app, event)
average = app.MeanSlider.Value;
%范围
Scale = int16(app.ScaleSlider.Value);
% 标准差
sigma = app.VarianceSlider.Value;
% 先限定三维图中的x,y轴坐标范围
% 先限定三维图中的x,y轴坐标范围
X = -Scale+1 : 1 : Scale-1;
Y = -Scale+1 : 1 : Scale-1;
Z = zeros( 2*Scale-1, 2*Scale-1 );
for row = 1 : 1 : 2*Scale-1
for col = 1 : 1 : 2*Scale-1
Z( row, col ) = ( X(row) - average ).^2 + ( Y(col) - average ).^2; % 均值(average, average)
end
end
% app.UIAxes.XLim=[-2*Scale 2*Scale];
% app.UIAxes.YLim=[-2*Scale 2*Scale];
Z = -Z / ( 2 * sigma^2 );
Z = exp(Z) / ( 2 * pi * sigma^2 );
% 显示高斯函数的三维曲面
surf(app.UIAxes,X, Y, Z);
end
% Value changed function: ScaleSlider
function ScaleSliderValueChanged(app, event)
% 均值
average = app.MeanSlider.Value;
%范围
Scale = int16(app.ScaleSlider.Value);
% 标准差
sigma = app.VarianceSlider.Value;
% 先限定三维图中的x,y轴坐标范围
% 先限定三维图中的x,y轴坐标范围
X = -Scale+1 : 1 : Scale-1;
Y = -Scale+1 : 1 : Scale-1;
Z = zeros( 2*Scale-1, 2*Scale-1 );
for row = 1 : 1 : 2*Scale-1
for col = 1 : 1 : 2*Scale-1
Z( row, col ) = ( X(row) - average ).^2 + ( Y(col) - average ).^2; % 均值(average, average)
end
end
% app.UIAxes.XLim=[-2*Scale 2*Scale];
% app.UIAxes.YLim=[-2*Scale 2*Scale];
Z = -Z / ( 2 * sigma^2 );
Z = exp(Z) / ( 2 * pi * sigma^2 );
% 显示高斯函数的三维曲面
surf(app.UIAxes,X, Y, Z);
end
其它所有的组件都可以根据这种方式进行搭建和调用