实验2 Matlab 绘图和可视化
一、实验目的
1、掌握绘制二维图形的常用函数。
2、掌握绘制三维图形的常用函数。
3、掌握图像读写函数和显示函数的使用方法。
二、实验内容
程序:
>> x=0:pi/50:2*pi;
y=(0.5+3.*sin(x)./(1+x.^2)).*cos(x);
plot(x,y)
xlabel('Variable X');
ylabel('Variable Y');
图像:
1.51Variable Y0.50-0.5-101234Variable X567
2、已知y1x2 , y2 cos(2x), y3 y1y2,完成以下操作:
(1)在同一坐标系下,用不同的颜色和线型绘制三条曲线。
程序:
x=-6:pi/100:6;
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
plot(x,y1,'b',x,y2,'g-.',x,y3,'r:')
xlabel('Variable X');
ylabel('Variable Y');
图像:
403020Variable Y100-10-20-30-6-4-20Variable X246
(2)在同一个图形窗口中,以子图的形式绘制三条曲线。
程序:
x=-6:pi/100:6;
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
subplot(3,1,1);plot(x,y1);
xlabel('Variable X');
ylabel('Variable Y');
subplot(3,1,2);plot(x,y2);
xlabel('Variable X');
ylabel('Variable Y');
subplot(3,1,3);plot(x,y3);
xlabel('Variable X');
ylabel('Variable Y');
图像:
40Variable Y200-61-4-20Variable X246Variable Y0-1-650-4-20Variable X246Variable Y0-50-6-4-20Variable X246
(3)在同一个图形窗口中,以子图的形式,分别用条形图、阶梯图、杆图和填
充图绘制三条曲线。
程序:
x=-6:pi/20:6;
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
subplot(4,1,1);bar(x,y1);
xlabel('Variable X');
ylabel('Variable Y');
subplot(4,1,2);stairs(x,y2);
xlabel('Variable X');
ylabel('Variable Y');
subplot(4,1,3);stem(x,y3);
xlabel('Variable X');
ylabel('Variable Y');
subplot(4,1,4);fill(x,y1,'r',x,y2,'b',x,y3,'g')
xlabel('Variable X');
ylabel('Variable Y');
图像:
Variable Y40200-810-1-6500-50-6500-50-6-4-20Variable X246-4-20Variable X246-4-20Variable X246-6-4-20Variable X2468Variable YVariable YVariable Y
程序:
t=linspace(0,3*pi/2,50);
s=linspace(0,pi/2,50);
[s,t]=meshgrid(s,t);
x=cos(s).*cos(t);
y=cos(s).*sin(t);z=sin(s);
colormap([0,1,1;0,0,1;1,0.5,1]);
surf(x,y,z);
xlabel('Variable X');
ylabel('Variable Y');
zlabel('Variable Z');
图像:
10.8Variable Z0.60.40.2010.50-0.5Variable Y-1-1-0.5Variable X0.501
4、熟悉使用matlab 图形处理工具箱,完成以下操作:
(1)利用imread 函数,读入一幅图像,并求出图像的大小信息。
程序:
x=imread('1.jpg');
size(x)
结果:
ans =
194 259 3
(2)利用imshow 函数,显示一幅图像。
程序:
>> imshow(x);
图像:
(3)利用rgb2gray 函数,把彩色图转为灰度图。
程序:
y=rgb2gray(x);
imshow(y)
结果:
(4)利用imwrite 函数,把图形按某种支持的格式写入另一图形文件。
程序:
x=imread('1.jpg');
imwrite(x,'1.jpg','bmp')
(5)利用subplot 函数,在一个窗口中显示多幅图像。
程序:
subplot(2,2,1);
imshow('10.jpg');
subplot(2,2,2);
imshow('11.jpg');
subplot(2,2,3);
imshow('12.jpg');
subplot(2,2,4);
imshow('13.jpg');
图像:
(6)利用imresize 函数,改变图像的大小。
程序:
x=imread('1.jpg');
y=imresize(x,2);
figure;imshow(y)
结果:
(7)利用imrotate 函数,对图像进行旋转。
程序:
x=imread('1.jpg');
y=imrotate(x,90);
imshow(y)
图片:
(8)利用edge 函数,对图形进行边缘检测,显示检测结果图。
程序:
x=imread('10.jpg');
y=rgb2gray(x);
z=edge(y);
figure,imshow(x);
figure,imshow(z)
图片:
5、设计一个简单界面。该界面至少应具有读入图像,输出图像等功能。
(1) 新建一个GUI: file/New/GUI/OK,即选择默认模板。在空白的界面中,拖入两个PushButton控件和一个axis控件。保存文件,文件名为dutu。
(2) 分别将两控件的String属性分别改为:“读入”和“关闭”。
(3) 编辑按钮功能:右击“读入”控件,View Callbacks/Callback,在代码区输入如下代码:
[filename,pathname] = ...
uigetfile({'*.jpg';'*.bmp';'*.gif'},'读入');
str = [pathname filename];
im=imread(str);
axes(handles.axes1);
imshow(im);
同理在“关闭”控件的代码区输入如下代码:
close(gcf);
(4)运行读入图片:
因篇幅问题不能全部显示,请点此查看更多更全内容