【学习笔记】Get Started with MATLAB-Chapter04

 所有偷过的懒,都会变成嘴巴抽回自己!
 [matlab 画图详解](http://blog.csdn.net/chw1989/article/details/6894107)

基本绘图函数

创建曲线

曲线函数plot有不同的形式:

  • plot(y)其中y是一个向量,分段输出向量y关于列数的图像
  • plot(x,y),输出向量y关于x的图像
>> x=0:pi/100:2*pi;
>> y=sin(x);
>> plot(x,y)
>> xlabel('x=0:2\pi')
>> ylabel('Sine of x')
>> title('plot of the Sine Function','FontSize',12)

这里写图片描述

在一张图上显示多组数据图

下面用一行代码在一张图上输出共享x-y坐标的3个图,并用颜色进行区分,进行图例标注:

>> x=0:pi/100:2*pi;
>> y=sin(x);
>> y2=sin(x-.25);
>> y3=sin(x-.5);
>> plot(x,y,x,y2,x,y3)
>> legend('sin(x)','sin(x-.25)','sin(x-.5)')

这里写图片描述

指定线型和颜色

plot(x,y,’color_style_marker’)
比如,这个代码表示,用“:”线性画图,在没个数值点用“+”标记:

>> plot(x,y,'r:+')

具体用法可见下表:

这里写图片描述

划线和标记

如果制定了标记符号,但没有指定线型,画出来的图像只有点没有线。比如下面的例子,用黑色方块把点描出来了,但是没有连成线。

>> plot(x,y,'ks')

每10个数据标记一个点:

>> x1=0:pi/100:2*pi;
>> x2=0:pi/100:2*pi;
>> x2=0:pi/10:2*pi;
>> plot(x1,sin(x1),'r:',x2,sin(x2),'r+')

这里写图片描述

绘制虚数图像

绘制虚数图像的时候,如果是多参数输入plot(x,y)形式,matlab自动省略虚部;如果是单参数输入plot(z)形式,则会被拆成实部和虚部,即等效于plot(real(z),imag(z))

>> t=0:pi/10:2*pi;
>> plot(exp(i*t),'-o')
>> axis equal    %让图像横纵坐标轴等长

这里写图片描述

在既有图上添加新图(共用坐标轴)

使用hold on语句。

>> [x,y,z]=peaks;
>> surf(x,y,z)      %绘制填充颜色的表面图 
>> shading interp   %去除网格线
>> hold on
>> contour3(x,y,z,20,'k')   %添加轮廓图
>> hold off

这里写图片描述

创建图形窗口

一般在你作图的时候会自动生成一个新图形窗口,你也可以自己创建一个新的(其中n为序号不是数量):

>> figure(n)

在一张图上展示多个图

>> x=0:pi/20:2*pi;
>> subplot(3,1,1);plot(sin(x))
>> subplot(3,1,2);plot(cos(x))
>> subplot(3,1,3);plot(sin(x).*cos(x))

这里写图片描述

控制坐标轴

坐标轴命令axis提供了可以设置刻度、方向、量程、宽高比(aspect ratio)的选项。

自动生成轴的量程&刻度线

默认情况下,matlab会找到数据的最大最小值来确定轴的范围,也可手动设置xlim,ylim,zlim。改某一个轴的时候其他轴可能也会受影响,可以通过图形窗口的“编辑→坐标轴属性”进行修改。

手动设置量程

强制设定:

axis([xmin xmax ymin ymax zmin zmax])

恢复自动:

axis auto

手动设置宽高比

matlab里预设好了一些宽高比,例如:

axis square   %x轴和y轴长度相同
axis equal    %让x和y轴单位刻度长度相同
 axis auto normal   %恢复默认状态

坐标轴的可见性visibility

axis on   %让轴可见
axis off  %让轴不可见

设置网格

设置图像后面的网格

grid on   %让网格可见
grid off  %让网格不可见

添加轴坐标和图标题

下面这个栗子绘制了一个图像并且增强了展示的内容:


>> t=-pi:pi/100:pi;
>> y=sin(t);
>> plot(t,y)
>> axis([-pi pi -1 1])
>> xlabel('-\pi \leq {\itt} \leq \pi')
>> doc {\itt}
>> ylabel('sin(t)')
>> title('Graph of the sine function')
>> text(0.5,-1/3,'{\itNote the odd symmetry.}')

图形标注可以使用字母,数字,汉字或按规定的方法表示希腊字母,如\pi表示π,\leq表示≤,\it表示斜体字,FontSize表示字体的大小, FontName表示字体的类型等。

保存图像

图片

在图像窗口“文件→另存为”,选择jpg、png、TIFF都可以。

注意:下次保存的时候还会按照上次保存的格式进行存储。

或者用savefig保存成.fig格式的文件,下次可以用openfig函数打开。也可以用imread函数

代码

哇塞,还可以用“文件→生成代码”导出代码文件,用于之后绘图。

工作区

保存:“文件→保存工作区”
打开:“文件→导入数据”

创建网格图和表面图

关于网格图和表面图

mesh和surf函数都能绘制三维函数图像,其中mesh只绘制定义了的数据点及其之间的连接线;surf不仅绘制连线,而且对图像进行着色。

可视化两个变量的函数

z=f(x,y)

  1. 首先生成X和Y的矩阵,对应定义域内的各个点的横纵坐标值
  2. 用X和Y估计函数值

meshgrid函数用于将X和Y匹配起来,具体来讲,不妨认为x是代表横坐标的行向量(1×n),y是代表纵坐标的列向量(m×1),则[X,Y]=meshgrid(x,y)将生成两个矩阵,分别为m×n的X和Y,其中X表示将x复制m行,Y表示将y复制n列。

绘制sinc函数

sinc函数——sin(r)/r
其中r是到原点的距离

>> [X,Y]=meshgrid(-8:.5:8);
>> R=sqrt(X.^2+Y.^2)+eps;
>> Z=sin(R)./R;
>> mesh(X,Y,Z)

默认配色网格图

为曲面图着色

①绘制sinc函数的曲面图②定义一套色表③添加颜色图例

每一块小曲面的颜色由Z的值决定。
>> [X,Y]=meshgrid(-8:.5:8);
>> R=sqrt(X.^2+Y.^2)+eps;
>> Z=sin(R)./R;
>> surf(X,Y,Z)
>> colormap hsv
>> colorbar

这里写图片描述

曲面图透明化

在前面的代码后面加上这句:
alpha在0~1之间,越接近0越透明。

>> alpha(.4)

这里写图片描述

纯色绘图

>> [X,Y]=meshgrid(-8:.5:8);
>> R=sqrt(X.^2+Y.^2)+eps;
>> Z=sin(R)./R;
>> surf(X,Y,Z,'FaceColor','red','EdgeColor','none')
>> camlight left
>> lighting phong

这里写图片描述

操纵图像

点击这个按钮之后,可以拖着图像各种翻滚,各种方向观察!天啦噜,怎么早没学会用这个软件啊!!
这里写图片描述

展示图片

图片型数据

打开durer.mat文件,这是一个二进制文件,用于保存变量

>> load durer
>> whos
  Name           Size               Bytes  Class     Attributes

  X            648x509            2638656  double              
  caption        2x28                 112  char                
  map          128x3                 3072  double              

>> imshow(X)
>> colormap(map)

打印 (略)

处理图表对象

图表对象

常见的图形对象

每当你利用函数创建一个图标的时候,matlab建立一个具有层级的图标对象。比如用plot函数会创建这些对象:

  • 图表:用于呈现坐标轴、菜单和工具栏的一个窗口
  • 轴:坐标轴、坐标系
  • 线 :呈现通过plot输入的数据
  • 文字 :坐标轴标签、注释、图例等

查看对象属性

>> x=1:10;
>> y=x.^3;
>> h=plot(x,y);
>> h.Color='red';   %等效于h=plot(x,y,'Color','red');
>> h.LineWidth
ans =
    0.5000

可以将plot输出的结果赋给一个变量,可见图形在matlab世界里也是以变量和矩阵形式存储的。

查看对象属性

>> get(h)   %返回h变量的各种属性值表
>> set(h)   %返回h各属性的可选值表

设置对象属性

(1)用set函数可以一次设置多个对象的相同属性。
例如:将每个数据点标记成绿色的方块,然后将矩阵中第一列数据点连线加粗

>> y=magic(5);
>> h=plot(y);
>> set(h,'Marker','s','MarkerFaceColor','g')
>> h(1).LineWidth=2;
>> y(:,1)
ans =
    17
    23
     4
    10
    11

这里写图片描述
(2)可以给不同属性赋不同的值
需要建立两个cell array,一个用于存储属性名prop_name,另一个存储属性值prop_values。

>> figure
>> y=magic(5);
>> h=plot(y);
>> prop_name(1)={'Marker'};
>> prop_name(2)={'MarkerFaceColor'};
>> prop_values(1,1)={'s'};
>> prop_values(1,2)={h(1).Color};
>> prop_values(2,1)={'d'};
>> prop_values(2,2)={h(2).Color};
>> prop_values(3,1)={'o'};
>> prop_values(3,2)={h(3).Color};
>> prop_values(4,1)={'p'};
>> prop_values(4,2)={h(4).Color};
>> prop_values(5,1)={'h'};
>> prop_values(5,2)={h(5).Color};
>> set(h,prop_name,prop_values)

这里写图片描述

面向对象的一些函数(用到自己查吧)

通过参数传递

function plotFunc(x)
y=1.5*cos(x)+6*exp(-.1*x)+exp(.07*x).*sin(3*x);
ym=mean(y);
hfig=figure('Name','Function and Mean');
hax=axes('parent',hfig);
plot(hax,x,y)
hold on 
plot(hax,[min(x) max(x)],[ym ym],'Color','red')
hold off
ylab=hax.YTick;
new_ylab=sort([ylab,ym]);
hax.YTick=new_ylab;
title('y=1.5cos(x)+6e^{-0.1x}+e^{0.07x}sin(3x)')
xlabel('X Axis')
ylabel('Y Axis')
end
>> x=-10:.005:40;
>> plotFunc(x)

这里写图片描述

找到既有对象的特定属性

>> plot(rand(5),'r:')
>> h=findobj('Type','line','Color','r','LineStyle',':');
>> h
h = 
  5×1 Line 数组:
  Line
  Line
  Line
  Line
  Line

限定搜索范围

>> h=findobj(gca,'Type','text','String','\pi/2');
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值