MatlabImagesc动画设计
MatlabImagesc用法以及简单动画设计
imagesc函数说明:
显示使用经过标度映射的颜色的图像。
语法
imagesc(C)
imagesc(x,y,C)
imagesc('CData',C)
imagesc('XData',x,'YData',y,'CData',C)
imagesc(___,Name,Value)
imagesc(___,clims)
imagesc(ax,___)
im = imagesc(___)
说明
-
imagesc(C)
将数组C
中的数据显示为一个图像,该图像使用颜色图中的全部颜色。C
的每个元素指定图像的一个像素的颜色。生成的图像是一个m
×n
像素网格,其中m
和n
分别是C
中的行数和列数。 -
imagesc(x,y,C)
指定图像位置。使用x
和y
可指定与C(1,1)
和C(m,n)
对应的边角的位置。要同时指定两个边角,请将x
和y
设置为二元素向量。要指定第一个边角并让imagesc
确定另一个,请将x
和y
设为标量值。图像将根据需要进行拉伸和定向。 -
imagesc('CData',C)
将图像添加到当前坐标区中而不替换现有绘图。此语法是imagesc(C)
的低级版本。有关详细信息,请参阅[高级与低级版本])。 -
imagesc('XData',x,'YData',y,'CData',C)
指定图像位置。此语法是imagesc(x,y,C)
的低级版本。 -
imagesc(___,Name,Value)
使用一个或多个名称-值对组参数指定图像属性。您可以在上述语法中的任何输入参数组合后指定名称-值对组参数。如需图像属性和说明的列表,请参阅[Image 属性]。 -
imagesc(___,clims)
指定映射到颜色图的第一个和最后一个元素的数据值。将clims
指定为[cmin cmax]
形式的二元素向量,其中小于或等于cmin
的值映射到颜色图中的第一种颜色,大于或等于cmax
的值映射到颜色图中的最后一种颜色。在名称-值对组参数后指定clims
。 -
imagesc(ax,___)
将在由ax
指定的坐标区中而不是当前坐标区 (gca
) 中创建图像。指定坐标区作为第一个输入参数。 -
im = imagesc(___)
返回创建的Image
对象。使用im
在创建图像后设置图像的属性。您可以使用先前语法中的任意输入参数组合指定此输出。
显示矩阵数据的图像
创建矩阵 C。显示 C 中数据的图像。向图添加颜色栏以显示当前颜色图。默认情况下,imagesc
色阶颜色范围以便图像使用颜色图中的所有颜色,其中 C
中的最小值映射到颜色图中的第一种颜色,最大值映射到最后一种颜色。
C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
imagesc(C)
colorbar
控制图像位置
放置图像,使其位于 x 轴上的 5 和 8 之间及 y 轴上的 3 和 6 之间。
x = [5 8];
y = [3 6];
C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
imagesc(x,y,C)
请注意,对应于 C(1,1)
的像素在点 (5,3) 上居中显示。对应于 C(3,4)
的像素在点 (8,6) 上居中显示。imagesc
在这两个点之间确定图像其余部分的位置和方向。
控制数据值到颜色图的颜色映射
将 C
创建为数据值的数组。创建 C
的图像并设置颜色范围,使 4 或更小的值映射到颜色图中的第一种颜色,18 或更大的值映射到颜色图中的最后一种颜色。显示颜色栏以说明数据值如何映入颜色图。
C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
clims = [4 18];
imagesc(C,clims)
colorbar
创建后修改图像
创建一个图像并返回图像对象 im
。然后,通过设置图像对象的 AlphaData
属性使图像半透明。
C = [1 2 3; 4 5 6; 7 8 9];
im = imagesc(C);
im.AlphaData = .5;%属性使图像半透明。
向三维视图中的坐标区添加图像
创建一个曲面图。然后,将一个图像添加在曲面下。imagesc
在 xy
平面中显示该图像。
Z = 10 + peaks;
surf(Z)
hold on
imagesc(Z)
注意:要将图像数据从不同标准格式(如 TIFF)的图形文件读取到 MATLAB 中,请使用 imread
。要将 MATLAB 图像数据写入图形文件,请使用 imwrite
。imread
和 imwrite
函数支持各种图形文件格式和压缩方案。
简单动画设计
ones
生成全一矩阵,通过代码重新修改特定位置元素,在运用着色函数imagesc
根据数值的不同给矩阵着色并显示。要实现动态效果可以使用循环语句,逐帧画出,就可以达到动画效果。
转化为视频:
clear;close all;clc;
A=ones(50,50);%创建全部为 1 的矩阵数组
x=1;Delaytime=0.2;%数据初始化
y=x*x;
fps = 10;
myVideo = VideoWriter('media.avi'); %创建视频文件
myVideo.FrameRate = fps; %初始化数据帧
open(myVideo); %打开视频
while x<50
x=x+1;
y=x*x;
A(x,x)=y;%给矩阵对角线元素重新赋值
imagesc(A);%矩阵上色
pause(Delaytime);%延时Delaytime秒
frame = getframe(gca);%截取动画帧,保存到frame变量中
im = frame2im(frame); %转化为彩色图片
writeVideo(myVideo,im); %追加数据帧
end
close(myVideo); %关闭视频
转化为动图:
clear;close all;clc;
A=ones(50,50);%创建全部为 1 的矩阵数组
x=0;Delaytime=0.2;%数据初始化
y=x*x;
while x<50
x=x+1;
y=x*x;
A(x,x)=y;%给矩阵对角线元素重新赋值
imagesc(A);%矩阵上色
pause(Delaytime);%延时Delaytime秒
frame = getframe;%截取动画帧,保存到frame变量中
data=frame2im(frame);%转化为彩色图片
[I,map] = rgb2ind(data,256);%rgb转化为索引图
if x==1
imwrite(I,map,'image.gif','gif','loopcount',inf,'Delaytime',0.02)
else
imwrite(I,map,'image.gif','gif','writemode','append','Delaytime',0.02)
end
end
上一篇: POSTMAN测试用例使用
下一篇: 测试用例方法判定表