Задайте класс под названием SurfImagePlot
это отображает поверхность с изображением под ним.
Чтобы задать класс, создайте файл с именем SurfImagePlot.m
это содержит следующий код. setup
метод для этого класса выполняет эти задачи:
Создает Surface
объект со смещением на ZData
обеспечить достаточно пробела, чтобы отобразить изображение
Создает Image
объект
Конфигурирует оси
Делает шкалу палитры видимой путем установки ColorbarVisible
свойство к 'on'
classdef SurfImagePlot < matlab.graphics.chartcontainer.ChartContainer & ...
matlab.graphics.chartcontainer.mixin.Colorbar
properties
ZData (:,:) double = []
Offset (1,1) double = 10
Colormap (:,3) double {mustBeGreaterThanOrEqual(Colormap,0),...
mustBeLessThanOrEqual(Colormap,1)} = parula
end
properties(Access = private,Transient,NonCopyable)
Surface (1,1) matlab.graphics.chart.primitive.Surface
Image (1,1) matlab.graphics.primitive.Image
end
methods(Access = protected)
function setup(obj)
% Get the axes
ax = getAxes(obj);
% Create surface and image objects
obj.Surface = surf(ax,[],[],[]);
hold(ax,'on')
obj.Image = imagesc(ax,[]);
% Configure axes, make colorbar visible
view(ax,3)
axis(ax,'tight')
grid(ax,'on')
obj.ColorbarVisible = 'on';
hold(ax,'off')
end
function update(obj)
% Update Data and Colormap
ax = getAxes(obj);
[r,c] = size(obj.ZData);
[X,Y] = meshgrid(1:c,1:r);
obj.Surface.XData = X;
obj.Surface.YData = Y;
obj.Surface.ZData = obj.ZData + obj.Offset;
obj.Image.CData = obj.ZData;
colormap(ax,obj.Colormap)
end
end
end
Затем задайте матричный Z
как z-координаты поверхности. Постройте Z
путем вызова SurfImagePlot
метод конструктора, который обеспечивается ChartContainer
класс. Задайте 'ZData'
аргумент пары "имя-значение" и возвращает объект как c
.
c =
SurfImagePlot with properties:
ZData: [21x21 double]
Offset: 10
Colormap: [256x3 double]
Position: [0.1300 0.1100 0.7608 0.8150]
Units: 'normalized'
Use GET to show all properties
Используйте c
изменить палитру в cool
.