可视化、优化初步
图形对象
图形对象使用点运算符获取属性.
函数式编程时, 采用 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