搜档网
当前位置:搜档网 › 如何能用Matlab绘制曲线图

如何能用Matlab绘制曲线图

如何能用Matlab绘制曲线图
如何能用Matlab绘制曲线图

各位同学:

在写论文和报告时,为了很好地表达你研究和开发的结果,不仅要用文字详细地描述你方法、步骤和结果,还必须配以各种图来说明问题。下面是我们实验室张媛媛老师申请博士学位论文中的部分曲线图、硬件框图、软件流程图和实验装置原理框图。她将在部分曲线图下面给出绘制图形的Matlab 程序和相关步骤,供大家学习和参考。

例一:

-0.5

00.511.52

2.5Time(s)

V o l t a g e (V )

-0.5

0.511.52

2.5时间(s)

电压(V )

图2-3-6 动态线性环节的输入输出信号 图2-3-7 模型输出和消噪后实验时数据比

1,输入信号u(k);2,输出信号y(k) 1,实验数据;2,模型输出

绘图程序如下: figure(1)

plot(t,y,'k',t,x,'k','LineWidth',1.4)

xlabel('Time(s)','fontname','宋体','Fontsize',9);%绘制横坐标 ylabel('Voltage(v)','fontname','宋体','Fontsize',9); %绘制纵坐标 %xlabel('时间(s)','fontname','宋体','Fontsize',9); %ylabel('电压(v)','fontname','宋体','Fontsize',9); %设置合适的图框大小.可将下面四句变为子程序,以便调用。 set(gcf,'color',[1,1,1]);

set(gca,'xcolor',[0,0,0],'ycolor',[0,0,0]);

set(gcf,'units','centimeters','position',[5,10,6.8,5.2]); set(gca,'box','on','fontname','宋体','Fontsize',9); %设置指向线的位置

annotation1 = annotation(figure(1),'line',[0.5585 0.6038],[0.7225 0.6459]); annotation1 = annotation(figure(1),'line',[0.4755 0.4453],[0.7129 0.6651]); %标注数字“1”“2”

annotation1 = annotation(...

figure(1),'textbox',...

'Position',[0.3849 0.5486 0.3396 0.1404],... 'LineStyle','none',... 'FontSize',8,... 'String',{'1'},... 'FitHeightToText','on'); annotation1 = annotation(... figure(1),'textbox',...

'Position',[0.5974 0.5382 0.3396 0.1404],... 'LineStyle','none',... 'FontSize',8,... 'String',{'2'},... 'FitHeightToText','on');

例二:

020*********

电压(v)

质量流量(g /s )

图2-4-3 '(.)f 的静态特性

绘图程序如下: figure(1)

plot(t,y,'k',t,x,'k','LineWidth',1.4)

xlabel('时间(s)','fontname','宋体','Fontsize',9); ylabel('质量流量(g/s)','fontname','宋体','Fontsize',9); legend('1,实验数据','2,拟合曲线')

※ ※当根据程序画出的线段位置不理想时,可用下面的步骤来做。

※ 一:选中“箭头”,使图形处于可编辑状态,如图A 所示。将线段拖到所需的位置。 ※ 二:右键打开下菜单,双击“show M-code ”,如右图所示。 ※ 三:则打开此时线段位置所对应的m 文件,例如下面。

annotation1 = annotation(figure1,'line',[0.5969 0.6265],[0.7727 0.7259]); ※ 四:将程序拷贝到自己的原程序中,注意修改figure1为figure(i),对应该图。

图A 图B

例三:

例3.1

00.511.522.5

3Time(ms)

V o l t a g e (V )

(e) 77.30g/s

图2-5-4 小波消噪处理后的实验数据的动态性能指标

0.5

1

1.5t/ms

U /v

5101520t/ms

f l o w /(

g /s )

(a)线性补偿后 (b)非线性校正后 图3-2-10 阶跃输入17.35g/s 时的动态非线性校正结果

此为利用程序stepspecs.m 在图上标注调节时间,两条横虚线为误差带。 figure(1) plot(x,y,’k ’)

[os,ts,tr]=stepspecs(t,y,5)%输出超调量,调节时间,上升时间,并绘制上面图形。 标准图框用第一页程序。

例3.2

123

45t/ms

U /v

输入幅值112.151 g/s

图3-3-4 Wiener 模型校正系统的在线非线性校正结果

4条虚线是给出4组数据点。画出虚线。

00.511.5

2t/ms

U /v

1,传感器模型输出;2,等效系统输出*()y k ;3,动态线性补偿后()y k d

图3-2-2 动态线性补偿前后比较和等效系统输出

例四:

流量(g/s)

流量(g /s )

-1-0.500.51流量(g/s)

流量(g /s )

图3-2-8 实验输入值与校正结果比较 图3-2-9 两者的误差曲线

X1=(*,*,*,*,…);y1=(*,*,*,*,…);此为一组数据; X2=(*,*,*,*,…);y2=(*,*,*,*,…);此为一组数据; Figure(1)

Plot(x1,y1,’k ’,x2,y2,’k*’) 其它图形方面的程序与前面相同。

00.511.5

2t/s

U /v

图5-3-15 =1.52时泵电压和泵电流

-1-0.500.511.5

泵电压(V)

极限电流(m A )

图5-3-16 极限电流平台

黑线对应的为一组数据点,一个横坐标和一个纵坐标对应一个点。其它图形方面的程序与前面相同。

下面程序来写;

annotation1 = annotation(... figure(1),'textbox',...

'Position',[0.5974 0.5382 0.3396 0.1404],... 'LineStyle','none',... 'FontSize',8,... 'String',{'

'},...

'FitHeightToText','on');

当位置不理想时,利用前面的方法调整。

1.5

22.53

时间(s)

电压(V )

图6-1-1 温度检测曲线

虚线方法与前面相同。 字体的程序写法和

annotation1 = annotation(... figure(1),'textbox',...

'Position',[0.5974 0.5382 0.3396 0.1404],... 'LineStyle','none',... 'FontSize',8,... 'String',{'

固定加热电压'},...

'FitHeightToText','on');

当位置不理想时,利用前面的方法调整。

0.5

0.60.70.80.9

1时间(s)

占空比

图6-1-2 加热电压占空比变化曲线

00.20.40.60.8

1Oxygen/%

I p c u r /m a

00.20.40.60.8

1Oxygen/%

I p c u r /m a

图6-2-3 氧含量和泵电流的静态关系 图6-2-4 模型输出和实验数据比较

1

Ipcur(ma)

l a m b d a

图6-2-10 拟合曲线和实验数据比较

5

5.56

6.57

7.5

8时间(s)

o x y g e n /%

图6-3-2 测量值时域图

X:和Y:是通过选中菜单中“Data Cursor ”,将光标移到曲线的某个位置,即可。

若加多个位置点,右键打开小菜单,选中“create new datatip”.

图5-2-2 控制器实现框图

图5-3-1 软件流程图

图5-3-7 加热控制的程序流程图

图5-3-14 实验装置流程图

这几个图都是利用visio软件绘制,很方便的。

Matlab中Bode图的绘制技巧(精)

Matlab中Bode图的绘制技巧 我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。 譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s^2 H(s= ------------------------------------------------------------------------------------------ s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。 我们可以用下面的语句: num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den; bode(H 这样,我们就可以得到以下的伯德图: 可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。 下面,我们来看看如何定制我们自己的伯德图风格: 在命令窗口中输入:bodeoptions

我们可以看到以下内容:ans = Title: [1x1 struct] XLabel: [1x1 struct] YLabel: [1x1 struct] TickLabel: [1x1 struct] Grid: 'off' XLim: {[1 10]} XLimMode: {'auto'} YLim: {[1 10]} YLimMode: {'auto'} IOGrouping: 'none' InputLabels: [1x1 struct] OutputLabels: [1x1 struct] InputVisible: {'on'} OutputVisible: {'on'} FreqUnits: 'rad/sec' FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear' MagVisible: 'on' MagLowerLimMode: 'auto' MagLowerLim: 0 PhaseUnits: 'deg' PhaseVisible: 'on' PhaseWrapping: 'off'

matlab 三维图形绘制实例

三维图形 一. 三维曲线 plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z 组成一组曲线的坐标参数,选项的定义和plot 函数相同。当x,y ,z 是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y ,z 是同维矩阵时,则以x,y,z 对应列元素绘制三维曲线,曲线条数等于矩阵列数。 Example1.绘制三维曲线。 程序如下: clf, t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); %向量的乘除幂运算前面要加点 plot3(x,y,z); title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); grid on; 所的图形如下: -1 1 X Line in 3-D Space Y Z 二. 三维曲面 1. 产生三维数据 在MATLAB 中,利用meshgrid 函数产生平面区域内的网格坐标矩阵。

语句执行后,矩阵X 的每一行都是向量x ,行数等于向量y 的元素的个数,矩阵Y 的每一列都是向量y ,列数等于向量x 的元素的个数。 2. 绘制三维曲面的函数 surf 函数和mesh 函数 example2. 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: clf, [x,y]=meshgrid(0:0.25:4*pi); %产生平面坐标区域内的网格坐标矩阵 z=sin(x+sin(y))-x./10; surf(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); title('surf 函数所产生的曲面'); figure; mesh(x,y ,z); axis([0 4*pi 0 4*pi -2.5 1]); title('mesh 函数所产生的曲面'); -2.5 -2-1.5-1-0.500.51surf 函数所产生的曲面

MATLAB中bode图绘制技巧(精)

Matlab中Bode图的绘制技巧学术收藏2010-06-04 21:21:48 阅读54 评论0 字号:大中小订阅我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s^2 H(s= ------------------------------------------------------------------------------------------ s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。我们可以用下面的语句:num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den; bode(H 这样,我们就可以得到以下的伯德图: 可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。下面,我们来看看如何定制我们自己的伯德图风格:在命令窗口中输入:bodeoptions 我们可以看到以下

内容:ans = Title: [1x1 struct] XLabel: [1x1 struct] YLabel: [1x1 struct]TickLabel: [1x1 struct]Grid: 'off' XLim: {[1 10]}XLimMode: {'auto'}YLim: {[1 10]} YLimMode: {'auto'}IOGrouping: 'none'InputLabels: [1x1 struct]OutputLabels: [1x1 struct]InputVisible: {'on'} OutputVisible: {'on'}FreqUnits: 'rad/sec'FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear'MagVisible: 'on' MagLowerLimMode: 'auto'MagLowerLim: 0PhaseUnits: 'deg'PhaseVisible: 'on'PhaseWrapping: 'off' PhaseMatching: 'off'PhaseMatchingFreq: 0 PhaseMatchingValue: 0我们可以通过修改上面的每一 项修改伯德图的风格,比如我们使用下面的语句画我 们的伯德图:P=bodeoptions;P.Grid='on'; P.XLim={[10 40000]};P.XLimMode={'manual'};P.FreqUnits='HZ'; num=[1.576e010 0 0];den=[1 1.775e005 1.579e010 2.804e012 2.494e014];H=tf(num,den; bode(H,P 这时,我们将会看到以下的伯德图: 上面这张图相对就比较好了,它的横坐标单位 是HZ,范围是[10 40K]HZ,而且打开了网格,便于我 们观察-3DB处的频率值。当然,你也可以改变bodeoptions中的其它参数,做出符合你的风格的伯

matlab三维二维离散曲面画图教程

傅里叶变换 img=imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %img=double(img); f=fft2(img); %傅里叶变换 f=fftshift(f); %使图像对称 r=real(f); %图像频域实部 i=imag(f); %图像频域虚部 margin=log(abs(f)); %图像幅度谱,加log便于显示 phase=log(angle(f)*180/pi); %图像相位谱 l=log(f); subplot(2,2,1),imshow(img),title('源图像'); subplot(2,2,2),imshow(l,[]),title('图像频谱'); subplot(2,2,3),imshow(margin,[]),title('图像幅度谱'); subplot(2,2,4),imshow(phase,[]),title('图像相位谱'); https://www.sodocs.net/doc/608621659.html,/s/blog_1667198560102wmzu.html 傅里叶变换 I = imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %读入数字图像 I = rgb2gray(I);%将图像进行灰度处理 J = fft2(I);%将图像实行傅里叶变换 figure,imshow(I);%这里能得到频谱图 J = fftshift(J); figure,imshow(log(abs(J)),[]); %将频谱平移 J(abs(J)<5)=0;%不必要的过滤掉 figure,imshow(log(abs(J)+eps),[]); J = ifftshift(J);K = ifft2(J);figure,imshow(K,[0 255]);%傅里叶逆变换 自己所写的代码 I = imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %读入数字图像 J = fft2(I); %将图像实行傅里叶变换figure,imshow(I); %这里能得到频谱图 J = fftshift(J); figure,imshow(log(abs(J)),[]); %将频谱平移 J(abs(J)<5)=0; %不必要的过滤掉figure,imshow(log(abs(J)+eps),[]); J = ifftshift(J);K = ifft2(J); ss=real(ifft2(J));sss=uint8(ss);subplot(1,2,2); imshow(sss) figure,imshow(K,[0 255]); %傅里叶逆变换

典型环节的Bode图资料

典型环节的B o d e图

控制系统的开环频率特性 目的:掌握开环Bode图的绘制 根据Bode图确定最小相位系统的传递函数 重点:开环Bode图的绘制、根据Bode图确定最小相位系统的传递函数 1 开环伯德图手工作图的一般步骤: 1)将开环传递函数表示为时间常数表达形式,计算各个典型环节的交接频率 2)求20lgK的值,并明确积分环节的个数ν3)通过(1,20lgK)绘制斜率为-20vdB/dec 低频段 4)随着频率增加,每遇到一个典型环节的交接频率,就改变一次斜率 最小相位系统定义:递函数的零点、极点全部位于S 左半平面,同时又无纯滞后环节的系统称为最小相位系统。否则就是非最小相位系统。 对数幅频特性与相频特性之间存在确定的对应关系。对于一个最小相位系统,我们若知道了其幅频特性,它的相频特性也就唯一地确定了。也就是说:只要知道其幅频特性,就能写出此最小相位系统所对应的传递函数,而无需再画出相频特性。 非最小相位系统高频时相角迟后大,起动性能差,响应缓慢。对响应要求快的系统,不宜采用非最小相位元件。 Tf函数用来建立实部或复数传递函数模型或将状态方程、或零级增益模型转化成传递函数形式。sys = tf(num,den)命令可以建立一个传递函数,其中分子和分母分别为num和den。输出sys是储存传递函数数据的传递函数目标。单输入单输出情况下,num和den是s的递减幂级数构成的实数或复数行向量。这两个向量并不要求维数相同。如h = tf([1 0],1)就明确定义了纯导数形式h(s)=s。若要构建多输入多输出传递函数,要分别定义每一个单输入单输出系统的端口的分子与分母。 2 典型环节的伯德图 绘制曲线在MATLAB中实现,利用下述的程序段: num=[b2 b1 b0]; den=[1 a2 a1 a0];H=tf(num,den); bode(H) margin(H) hold on 2.1 比例环节 传递函数:() G s K = 频率特性:() G j K ω= 对数幅频特性:()20lg L j K ω= 对数相频特性:()0 ?ω= 程序段: num=[0 10]; den=[0 1]; H=tf(num,den); bode(H) margin(H) hold on 结论:放大环节的对数幅频特性是一条幅值为20lgK分贝,且平行于横轴的直线,相频特性是一条和横轴重合的直线。 K>1时,20lgK>0dB;K<1时,20lgK<0dB。2.2 惯性环节(低通滤波特性) 传递函数:1 () 1 G s sτ = + 频率特性:() ()()j G j A e?ω ωω = 对数幅频特性: 2 () 1() Lω τω = + 对数相频特性:()arctan ?ωτω =- 绘制1 () 10.1 G s s = + 的Bode图 程序段: num=[0 1]; den=[0.1 1];H=tf(num,den); bode(H) margin(H) hold on

使用simulink bode图的绘制

在Matlab中,大多时候,我们都是用M语言,输入系统的传递函数后,用bode函数绘制bode图对系统进行频率分析,这样做,本人觉得效率远不如Simulink建模高。如何在Matlab/Simulink中画bode图,以前也在网上查过些资料,没看到太多有用的参考。今天做助教课的仿真,又要画电机控制中电流环的bode图,模型已经建好,step response也很容易看出来,可这bode图怎么也出不来,又不愿意用m语言写出传递函数再画。baidu和google 了好一阵,几乎没有一个帖子说的清清楚楚的,经过一番摸索,终于掌握了Simulink里画bode图的方法。.其实,Simulink里画bode图,非常的easy,也很方便。写此文的目的是希望对那些常用Simulink进行仿真希望画bode图又不愿用M语言的新手有所帮助。 以下均是以Matlab R2008a为例。 首先,在simulink里建好model。如图1,这里需要注意的是,输入和输出要用input port 和output port,这样以后画bode图的时候,系统就会知道是这两个变量之间的关系。 图1 建好model 其次,选择线性分析。Tools->Control Design ->Linear Analysis。如图2。 图2 选择Linear Ansysis 将出现如图3所示的Control and Estimation Tools Manager窗口。

图3 Control and Estimation Tools Manager窗口 第三步,激动人心的时刻到了,哈哈。如果你是按照前面的步骤来的,那么这时候,你就应该可以直接画出bode图,在窗口的下方,将“Plot linear analysis result in a ”前面的方框打上勾,已打的就不用管了,再在后面的下拉框里选择“bode response plot”,即画output port和input port之间的bode图,再点击“Linearize Model”按钮,就OK了。其实除了bode图,还可以画其他很多响应曲线,比如step response、impulse response和Nyquist图等等,只需选择相应的step response plot,inpulse response plot或者Nyquist plot等等。方法都是相同的。选择选择“bode response plot”,如图4所示。 图4 画出bode图

BODE图 画图过程

电机定位系统校正(BODE图) MATLAB软件具有强大的计算能力和绘图功能,能够快速、准确地做出频域特性曲线。利用MATLAB绘制系统的Bode图,为控制系统设计和分析提供了极大的方便。 1. 创建M-file文挡,并输入如下程序,运行后生成LTI对象my_sys: J=3.2284e-6; b=3.5077e-6; K=0.0274; R=4; L=2.75e-6; num=[0 0 0 K]; den=[(J*K) (J*R+(L*b)) ((b*R)+K^2) 0]; my_sys=tf(num,den); 打开Matlab7.0软件,并新建一个空文档,将程序复制到文档内,如图1所示: 图1 2.运行程序并保存运行结果。如图2所示: 图2

3.打开Start-Toolboxes—Control System—SISO Design Tool。启动SISO Design,如图3所示 图3 4.将my_sys程序导入到SISO Design Tool中,如图4所示 图4

5.在View菜单中,关闭根轨迹显示,只显示开环的Bode图。如图5所示 图5 6. 加积分环节;加零点(60角频率)将各个参数进行积分:空白处右键—Add Pole/Zero—Integrator。如图6所示: 图6

7.在magnitude曲线加零点,然后Analysis菜单下Response to Step Command 指令。如图7所示: 图7 8.在管理反馈界面中,只显示闭环的r与y的关系—LT1 Viewer For SISO Design Tool界面空白处右键—Systems—Closed Loop :r to u (green),如图8所示: 图8

matble课程论文(MATLAB在三维作图中的应用)

《MATLAB》课程论文 MATLAB在三维作图中的应用 姓名: 学号: 专业: 班级: 指导老师: 学院: 完成日期:

MATLAB在三维作图中的应用 [摘要]MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,方便高效,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件。其实MATLAB的高层绘图函数都是利用低层绘图函数建立起来的。所以MATLAB的计算准确、效率高、使用快捷等优点常被广泛应用于科学和工程领域. [关键字]MATLAB语言三维图形图像处理绘制 一,问题的提出 MATLAB语言是当前国际学科界应用很广泛的一种软件,强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,利用它强大的图像处理来绘制三维图形既简单而且也很方便。在绘制三维图形的过程中也用到了MATLAB语言的其他功能,绘制三维图形时用到了它提供的一些函数,利用这些函数可以方便的生成一些特殊矩阵,因此可生成一个坐标平面。MATLAB语言强大的功能也在二维三维绘图中的得到了很广泛的应用,利用它所提供的精细的图像处理功能,如MATLAB还提 供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件,还可以对所绘制的三维图形作一个修饰的处理。MATLAB语言具有强大的以图形化显示矩阵和数组的能力,同时它给这些图形增加注释并且可以对图形进行标注和打印。MATLAB的图形技术包括三维的可视化、图形处理、动画等高层次的专业图形的高级绘图,例如图形的光照处理、色度处理以及四维数据的表现等。那么,如何把它强大的功能应用于实际应用中,下面我们将用实例说明MATBLE在三维作图中的应用。 二,MATLAB的主要功能及特点 MATLAB近几年广泛用于图像处理和识别, 使用MATLAB设计模式识别应用软件将使设

matlab如何绘制二维正态曲面

二维连续随机变量(X,Y)的联合概率密度为: 2(,)21x y f x y r πσσ=-22222()()()()122(1)x y y x x y x y x y y x r r e μμμμσσσσ??----??--+-???? 记作(X ,Y )~()r N y x y x ,,,,σσμμ 下面我自己绘制一个(X ,Y )~()5.0,1,1,0,0N 的正态函数的图像(2013年1月8日) (,)23f x y π= 222x 3xy y e ??--+?? close all; clear clc x=-4:.1:4; y=x; [x y]=meshgrid(x,y); z=sqrt(3)/2/pi*exp(-2.*x.^2./3-2.*y.^2./3+x.*y); mesh(x,y,z)

close all; clear clc x=-4:.1:4; y=x; [x y]=meshgrid(x,y); z=sqrt(3)/2/pi*exp(-2.*x.^2./3-2.*y.^2./3+x.*y); mesh(x,y,z) hold on; fill3([-4 -4 4 4],[0 0 0 0],[0.35 0 0 0.35],'r') surf(1:2,[1 1],[0 0;1 1]) ezmesh('100-x-y') ezplot('x=2')

高三数学图片 >> 二维正态分布的密度函数图像 资料名称:二维正态分布的密度函数图像 资料编号:100973 资源分类:图像素材 所属科目:数学 适用年级:高三 文件大小:12.55KB 文件类型:image/jpeg 资料简介:二维正态分布的密度函数图像正态分布,概率与统计, >> clf >> x=2; >> y=0; >> z=0; >> plot3(2,0,0,'m:p')

教你如何用matlab绘图(全面)

强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。 一.二维绘图 二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。 一.绘制二维曲线的基本函数 在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。 1.plot函数的基本用法 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式 plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。 例51 在[0 , 2pi]区间,绘制曲线 程序如下:在命令窗口中输入以下命令 >> x=0:pi/100:2*pi; >> y=2*exp(-0.5*x).*sin(2*pi*x); >> plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。 例52 绘制曲线 这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:

matlab画三维曲面图

Matlab画三维曲面图 对于如下的数据,如何才能在matlab中画出三维图形. 620 0.03 110 620 0.07 112 630 0.07 119 645 0.02 210 650 0.02 200 650 0.03 230 650 0.06 145 650 0.08 155 655 0.01 180 655 0.06 145 660 0.05 150 680 0.02 175 680 0.04 170 680 0.06 145 680 0.08 155 x y z Matabl程序如下: %%定义数据 x=[620 620 630 645 650 650 650 650 655 655 660 680 680 680 680]; y=[0.03 0.07 0.07 0.02 0.02 0.03 0.06 0.08 0.01 0.06 0.05 0.02 0.04 0.06 0.08]; z=[110 112 119 210 200 230 145 155 180 145 150 175 170 145 155]; %%画图函数部分,参考https://www.sodocs.net/doc/608621659.html,/thread-128595-1-1.html cbboy编写的函数%% function PlotGriddata(x,y,z) mx=min(x); %求x的最小值 Mx=max(x); %求x的最大值 my=min(y); My=max(y); Nx=20; %定义x轴插值数据点数,根据实际情况确定 Ny=20; %定义y轴插值数据点数,根据实际情况确定 cx=linspace(mx,Mx,Nx);%在原始x数据的最大值最小值之间等间隔生成Nx个插值点 cy=linspace(my,My,Ny);%在原始数据y的最大值最小值之间等间隔生成Ny个插值点 cz=griddata(x,y,z,cx,cy','cubic');%调用matlab函数进行立方插值,插值方式还有'v4'、'linear' surf(cx,cy,cz); %meshz(cx,cy,cz) %绘制曲面

MATLAB中bode图绘制技巧

Matlab中Bode图的绘制技巧 学术收藏 2010-06-04 21:21:48 阅读54 评论0 字号:大中小订阅 我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。 譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s^2 H(s)= ------------------------------------------------------------------------------------------ s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。) 我们可以用下面的语句: num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den); bode(H) 这样,我们就可以得到以下的伯德图: 可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。

下面,我们来看看如何定制我们自己的伯德图风格: 在命令窗口中输入:bodeoptions 我们可以看到以下内容: ans = Title: [1x1 struct] XLabel: [1x1 struct] YLabel: [1x1 struct] TickLabel: [1x1 struct] Grid: 'off' XLim: {[1 10]} XLimMode: {'auto'} YLim: {[1 10]} YLimMode: {'auto'} IOGrouping: 'none' InputLabels: [1x1 struct] OutputLabels: [1x1 struct] InputVisible: {'on'} OutputVisible: {'on'} FreqUnits: 'rad/sec' FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear' MagVisible: 'on' MagLowerLimMode: 'auto' MagLowerLim: 0 PhaseUnits: 'deg' PhaseVisible: 'on' PhaseWrapping: 'off' PhaseMatching: 'off' PhaseMatchingFreq: 0 PhaseMatchingValue: 0 我们可以通过修改上面的每一项修改伯德图的风格,比如我们使用下面的语句画我们的伯德图: P=bodeoptions; P.Grid='on'; P.XLim={[10 40000]}; P.XLimMode={'manual'}; P.FreqUnits='HZ'; num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den); bode(H,P) 这时,我们将会看到以下的伯德图:

MatlabSimulink中bode图的画法

Matlab/Simulink中bode图的画法 在Matlab中,大多时候,我们都是用M语言,输入系统的传递函数后,用bode函数绘制bode图对系统进行频率分析,这样做,本人觉得效率远不如Simulink建模高。如何在Matlab/Simulink中画bode图,以前也在网上查过些资料,没看到太多有用的参考。今天做助教课的仿真,又要画电机控制中电流环的bode图,模型已经建好,step response也很容易看出来,可这bode图怎么也出不来,又不愿意用m语言写出传递函数再画。baidu和google了好一阵,几乎没有一个帖子说的清清楚楚的,经过一番摸索,终于掌握了Simulink里画bode图的方法。.其实,Simulink里画bode图,非常的easy,也很方便。写此文的目的是希望对那些常用Simulink进行仿真希望画bode图又不愿用M语言的新手有所帮助。 以下均是以Matlab R2008a为例。 首先,在simulink里建好model。如图1,这里需要注意的是,输入和输出要用input port和output port,这样以后画bode图的时候,系统就会知道是这两个变量之间的关系。 图1 建好model 其次,选择线性分析。Tools->Control Design ->Linear Analysis。如图2。

图2 选择Linear Ansysis 将出现如图3所示的Control and Estimation Tools Manager窗口。

图3 Control and Estimation Tools Manager窗口 第三步,激动人心的时刻到了,哈哈。如果你是按照前面的步骤来的,那么这时候,你就应该可以直接画出bode图,在窗口的下方,将“Plot linear an alysis result in a ”前面的方框打上勾,已打的就不用管了,再在后面的下拉框里选择“bode response plot”,即画output port和input port之间的bode图,再点击“Linearize Model”按钮,就OK了。其实除了bode图,还可以画其他很多响应曲线,比如step response、impulse response和Nyquist图等等,只需选择相应的step response plot,inpulse response plot或者Nyquist plot等等。方法都是相同的。选择选择“bode response plot”,如图4所示。 图4 画出bode图 稍等片刻,便出现了图1中output port和input port的bode图了。是不是很简单?!

Matlab绘图-很详细,很全面

Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。 一.二维绘图 二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。 一.绘制二维曲线的基本函数 在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。 1.plot函数的基本用法 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式 plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。 例51 在[0 , 2pi]区间,绘制曲线 程序如下:在命令窗口中输入以下命令 >> x=0:pi/100:2*pi; >> y=2*exp(-0.5*x).*sin(2*pi*x); >> plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。 例52 绘制曲线 这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:>> t=-pi:pi/100:pi; >> x=t.*cos(3*t); >> y=t.*sin(t).*sin(t);

应用MATLAB绘制二次曲面图

应用MATLAB 绘制二次曲面图 1、用surf 工mesh 函数绘图 Surf 函数绘制的是三维表面图,mesh 函数绘制的是三维网格图,当二次曲面方程是标准方程时,原方程式可化为),(),,(),,(x z f y z y f x y x f z ===时,我们就用这两种函数完成绘图。 例1、绘曲面①11694222=++z y x ②11694222=-+z y x ③4 9422z y x =+在区域 44,33,22≤≤-≤≤-≤≤-z y x 上的图像。 解:以上三个方程化为:941422y x z --±=、19 4422-+±=y x z 、9422y x z +=; 2、用plot3或contour3函数绘图 plot3函数绘制的是三维直角坐标曲线图,contour3函数绘制的是三维等高曲线图。 x=-2:0.1:2;y=-3:0.1:3; [x,y]=meshgrid(x,y); z1=4.*sqrt(1-(x.^2)./4-(y.^2)./9); z2=-4.*sqrt(1-(x.^2)./4-(y.^2)./9); subplot(2,3,1); plot3(x,y,z1); hold on ; plot3(x,y,z2) grid on 3、用ezsurf 或ezmesh 函数绘图 Ezsurf 函数和ezmesh 函数主要针对参数方程的三维作图函数,它们是专业作图函数,ezsurf 绘制三维表面图,ezmesh 绘制三维网格图,当二次曲面可化为参数方程时,就可以用这两种函数完成绘图。 椭球方程的参数方程为:?? ???===ββαβαsin 4cos sin 3cos cos 2z y x ( 22, *20pi pi pi ≤≤-≤≤βα) 双曲方程的参数方程为:?????-±===14sin 3cos 22t z t y t x αα (1, *20≥≤≤t pi α或1≤t )

matlab-三维曲面的自动绘制

一、设计目的 Matlab 有两类绘图命令,一类是直接对图形句柄进行操作的低层绘图命令,另一类是在低层命令基础上建立起来的高层绘图命令。高层绘图命令简单明了、方便高效。利用高层绘图函数,用户不需过多考虑绘图细节,只需给出一些基本参数就能得到所需图形。在三维曲面的绘制中,Matlab提供了meshgrid 函数、mesh waterfall、函数、surf函数、Surfl函数和patch函数。他们的使用方法基本相同。在Matlab中,为了表现图形的显示效果,提供了一些控制函数,有视角的控制、光度的控制、色彩的控制和透明度的控制等。在三维图形的最佳视觉效果中,Matlab提供了两种方法:一是改变观看的角度(视角),二是旋转图形。视角由函数view控制,旋转有两个指令:rotate和rotate3d。光照的控制主要有camlight指令、lighting 指令、material函数、light函数、lightangle函数。色彩控制包括颜色的向量表示、色图、三维表面图形的着色以及浓淡处理。图形的透明值用0和1之间的值表示,常用alpha来说明。 二、设计思路 绘制所代表的三维曲面图,先要在平面选定一矩形区域,假定矩形区域,然后将在方向分成份,将在方向分成份,由各划分点分别作平行于两坐标轴的直线,将区域D分成个小矩形,生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数求对应网格坐标的Z矩阵。 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b;y=c:d2:d; [X,Y]= meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。当x=y时,meshgrid 函数可写成meshgrid(x)。 当函数不能简单表示出来时,便只能用for循环或while循环来计算z的元素。不过在很多情况下,可以按行或按列计算z,优势必须一个一个地计算z 中的元素,这是用嵌套循环进行计算。 三、设计程序及说明 绘制三维曲面 MATLAB提供了mesh函数和surf函数来绘制三维曲面图。surf函数和mesh 函数的调用格式为: mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。 1.1 绘制三维曲面图z=sin(x+sin(y))-x/10。

matlab绘制bode图技巧

我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。 譬如我们要画出下面这个传递函数的伯德图: 1.576e010 s^2 H(s)= ------------------------------------------------------------------------------------------ s^4 + 1.775e005 s^3 + 1.579e010 s^2 + 2.804e012 s + 2.494e014 (这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。) 我们可以用下面的语句: num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den); bode(H) 这样,我们就可以得到以下的伯德图: 可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。 下面,我们来看看如何定制我们自己的伯德图风格: 在命令窗口中输入:bodeoptions 我们可以看到以下内容: ans = Title: [1x1 struct] XLabel: [1x1 struct]

YLabel: [1x1 struct] TickLabel: [1x1 struct] Grid: 'off' XLim: {[1 10]} XLimMode: {'auto'} YLim: {[1 10]} YLimMode: {'auto'} IOGrouping: 'none' InputLabels: [1x1 struct] OutputLabels: [1x1 struct] InputVisible: {'on'} OutputVisible: {'on'} FreqUnits: 'rad/sec' FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear' MagVisible: 'on' MagLowerLimMode: 'auto' MagLowerLim: 0 PhaseUnits: 'deg' PhaseVisible: 'on' PhaseWrapping: 'off' PhaseMatching: 'off' PhaseMatchingFreq: 0 PhaseMatchingValue: 0 我们可以通过修改上面的每一项修改伯德图的风格,比如我们使用下面的语句画我们的伯德图:P=bodeoptions; P.Grid='on'; P.XLim={[10 40000]}; P.XLimMode={'manual'}; P.FreqUnits='HZ'; num=[1.576e010 0 0]; den=[1 1.775e005 1.579e010 2.804e012 2.494e014]; H=tf(num,den); bode(H,P) 这时,我们将会看到以下的伯德图:

相关主题