可视化、优化初步

图形对象

图形对象使用点运算符获取属性.

函数式编程时, 采用 get(obj) 获取 obj 的所有属性或者 get(obj, attr) 获取某一个属性, 采用 set(obj, new)obj 所有属性赋值或者 set(obj, attr, value) 设置某一个属性.

参考: 图形对象

Line对象

Line对象属于图标对象, plot() 的返回值即为Line对象.

其结构为:

{
% 线条
.Color
.ColorMode                % Mode表示属性是自动控制('auto')还是手动控制('manual'), 下同
.LineStyle
.LineWidth
.SeriesIndex              % 同时绘制多条线条时, 某一条的索引
.LineJoin                 % 转折处样式
.AlignVertexCenters       % 线条是否锐化


% 点标
.Marker
.MarkerMode
.MarkerIndices            % 点标索引
.MarkerSize
.MarkerEdgeColor          % 点标边缘颜色
.MarkerFaceColor          % 点标内部颜色


% 数据
.XData
.XDataMode
.XDataSource              % 使用Source可以随着数据更新即时更新图表, 下同


.YData
.YDataMode
.YDataSource


.ZData
.ZDataMode
.ZDataSource


.ThetaData
.ThetaDataMode
.ThetaDataSource


.RData
.RDataMode
.RDataSource


.LatitudeData
.LatitudeDataMode
.LatitudeDataSource


.LongitudeData
.LongitudeDataMode
.LongitudeDataSource


% 表数据
.SourceTable
.XVariable
.YVariable
.ZVariable
.RVariable
.ThetaVariable
.LatitudeVariable
.LongitudeVariable


% 图例
.DisplayName              % 图例标签
.Annotation               % 一个Annotation对象. 用例: `l.Annotation.LegendInformation.IconDisplayStyle = 'off';` 将l从图例中排除


% 交互
.Visible
.DataTipTemplate          % 控制显示信息的DataTipTemplate对象
.ContextMenu
.Selected
.SelectionHighlight
.Clipping                 % 是否显示坐标纸外面的部分


% 回调
.ButtonDownFcn
.CreateFcn                % 构造函数
.DeleteFcn                % 析构函数


% 回调控件
.Interruptible
.BusyAction
.PickableParts
.HitTest
.BeingDeleted


% 层级
.Parent                   % 父对象
.Children                 % 子对象
.HandleVisibility         % 是否在父对象中可获取本对象句柄


% 标识符
.Type                     % 'line'
.Tag                      % 用于findobj
.UserData
}

Axes对象

Axes对象属于顶层对象, 也是Line对象的父对象.

ax = gca; 用于获取当前画布的Axes对象 (get current axes).

其结构为:

{
% 字体
.FontName
.FontWeight               % 'normal'或'bold'
.FontSize
.FontSizeMode
.FontAngle                % 'normal'或'italic'
.LabelFontSizeMultiplier  % Multiplier为缩放因子
.TitleFontSizeMultiplier
.TitleFontWeight
.SubtitleFontWeight
.FontUnits
.FontSmoothing            % 是否平滑处理


% 刻度
.XTick
.XTickMode
.XTickLabel
.XTickLabelMode
.XTickLabelRotation
.XTickLabelRotationMode
.XMinorTick               % 是否使用次刻度


.YTick
.YTickMode
.YTickLabel
.YTickLabelMode
.YTickLabelRotation
.YTickLabelRotationMode
.YMinorTick


.ZTick
.ZTickMode
.ZTickLabel
.ZTickLabelMode
.ZTickLabelRotation
.ZTickLabelRotationMode
.ZMinorTick


.TickLabelInterpreter     % 'tex'或'latex'或'none'
.TickDir                  % 'in'向内, 'out'向外, 'both'以轴线为中心, 'none'没有刻度
.TickDirMode
.TickLength


% 标尺
.XLim
.XLimMode
.XLimitMethod
.XAxis
.XAxisLocation
.XColor
.XColorMode
.XDir                     % 'normal'或'reverse'
.XScale                   % 'linear'或'log'


.YLim
.YLimMode
.YLimitMethod
.YAxis
.YAxisLocation
.YColor
.YColorMode
.YDir
.YScale


.ZLim
.ZLimMode
.ZLimitMethod
.ZAxis
% 没有.ZAxisLocation, AxisLocation只用于二维
.ZColor
.ZColorMode
.ZDir
.ZScale


% 网格
.Layer


.XGrid
.YGrid
.Zgrid
.GridLineStyle
.GridColor
.GridColorMode
.GridAlpha
.GridAlphaMode


.XMinorGrid
.YMinorGrid
.ZMinorgrid
.MinorGridLineStyle
.MinorGridColor
.MinorGridColorMode
.MinorGridAlpha
.MinorGridAlphaMode


% 标签
.Title
.Subtitle
.TitleHorizontalAlighment % 'center'或'left'或'right'
.XLabel
.YLabel
.ZLabel
.Legend


% 多图
.ColorOrder
.LineStyleOrder
.NextSeriesIndex
.NextPlot
.SortMethod
.ColorOrderIndex
.LineStyleOrderIndex


% 色度
.Colormap                 % 3列RGB数组
.ColorScale               % 'linear'或'log'
.CLim                     % 颜色范围
.CLimMode
.Alphamap                 % 透明度图
.AlphaScale
.ALim
.ALimMode


% 图框
.Color                    % 背景颜色
.LineWidth
.Box
.BoxStyle
.Clipping
.CLippingStyle
.AmbientLightColor        % 背景光源


% 位置
.OuterPosition            % (带标签)图的[left, bottom, width, height]
.InnerPosition            % 等同于.Position
.Position                 % (不带标签)图的[left, bottom, width, height]
.TightInset               % 边距[left, bottom, top, right]
.PositionConstraint       % 'outerposition'或'innerposition'保持不变
.Units                    % 大小单位
.DataAspectRatio          % 各标尺等物理长度所含单位长度个数
.DataAspectRatioMode
.PlotBoxAspectRatio       % 各标尺缩放因子
.PlotBoxAspectRatioMode
.Layout


% 视图
.View                     % [方位角, 仰角]
.Projection
.CameraPosition           % 坐标
.CameraPositionMode
.CameraTarget
.CameraUpVector           % 向上方向向量
.CameraUpVectorMode
.CameraViewAngle          % 视角
.CameraViewAngleMode


% 交互
.Toolbar                  % 图表右上角的工具箱
.Interactions
.Visible
.CurrentPoint             % 鼠标指针在图中投影的前点与后点坐标
.ContextMenu
.Selected
.SelectionHighlight


% 回调
.ButtonDownFcn
.CreateFcn
.DeleteFcn


% 回调控件
.Interruptible
.BusyAction
.PickableParts
.HitTest
.BeingDeleted


% 层级
.Parent
.Children
.HandleVisibility


% 标识符
.Type                     % 'axes'
.Tag
.UserData
}

矩阵可视化

meshgrid(x)meshgrid(x, y) 可以将两个向量组合为一个坐标对, 如:

>> [X, Y] = meshgrid(2:3, 1:3)
X =
2 3
2 3
2 3


Y =
1 1
2 2
3 3
>> Z = X.*Y;
>> surf(X, Y, Z)  % 描点绘制曲面图像

三维图的另一种图像是等高线图, 用 contour(X, Y, Z) 可以绘制.

streamline(X, Y, Z, U, V, W, startx, starty, startz) 用于绘制流线图.

流线图是向量场的示意图, 上述函数在 (X, Y, Z) 设置了 (U, V, W) 向量, 然后在 (startx, starty, startz) 静止放置粒子, 粒子运动的轨迹即为流线图.

优化初步

APP中的优化 (Optimization Toolbox) 用于求解约束优化问题.

优化主要输入目标函数和约束函数, 定义如下:

function f = objectiveFcn(optimInput)
    % optimInput为输入, f为输出
end


function [c, ceq] = constraintFcn()
    % c和ceq均为约束条件函数计算结果
    % 当c均为非正数且ceq均为0时约束为真
    % 缺少的约束用[]替代
end