文档库 最新最全的文档下载
当前位置:文档库 › MATLAB曲线曲面

MATLAB曲线曲面

MATLAB曲线曲面
MATLAB曲线曲面

MATLAB曲线拟合

1.多项式函数拟合:a=polyfit(xdata,ydata,n)

其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入,输出参数a为拟合多项式的系数,多项式在x处的值y可用y=polyval(a,x) 计算

2.一般的曲线拟合:p=curvefit(…Fun?,p0,xdata,ydata)

其中Fun表示函数Fun(p,data)的M函数文件,p0表示函数的初值.curvefit()命令的求解问题形式是,若要求解点x处的函数值可用程序f=Fun(p,x)计算.

例如已知函数形式,并且已知数据点要确定四个未知参数a,b,c,d.使用curvefit命令,数据输入;初值输;并且建立函数的M文件(Fun.m).若定义,则输出。

又如引例的求解,MATLAB程序:

t=[l:16];%数据输人

y=[ 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10.2 10.32 10.42 10.5 10.55 10.58 10.6];

plot(t,y,?o?)%画散点图

p=polyfit(t,y,2) (二次多项式拟合)

计算结果:

p=-0.0445 1.0711 4.3252 %二次多项式的系数

由此得到某化合物的浓度y与时间t的拟合函数

当测量值是准确的,没有误差时,一般用插值;

当测量值与真实值有误差时,一般用数据拟合。

插值:

对于一维曲线的插值,一般用到的函数yi=interp1(X,Y,xi,method),其中method包括nearst,linear,spline,cubic。

对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method),其中method也和上面一样,常用的是cubic。

拟合:

对于一维曲线的拟合,一般用到的函数p=polyfit(x,y,n)和yi=polyval(p,xi),这个是最常用的最小二乘法的拟合方法。对于二维曲面的拟合,就这个机会好好把二维曲面的插值和拟合总结归纳一下,下面给出实例和讲解。

原始数据

x=[1:1:15];

y=[1:1:5];

z=[0.2 0.24 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25 0.29;

0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;

0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;

0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;

0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37];

z是一个5乘12的矩阵。

(1)直接用原始数据画图如下:

surf(x,y,z)

title(?Original data Plot?);

xlabel(?X'), ylabel(?Y'), zlabel(?Z'), colormap, colorbar;

axis([0 15 0 6 0.15 0.55])

(2)考虑插值,需要用到的函数interp2 x1=1:0.2:12;

y1=1:0.2:5;

[x2,y2]=meshgrid(x1,y1);

t11=interp2(x,y,z,x2,y2,?cubic?);

surf(x1,y1,t11)

title(?After Fit data Plot?);

xlabel(?X'), ylabel(?Y'), zlabel(?Z'), colormap, colorbar;

axis([0 15 0 6 0.2 0.55])

(3)考虑拟合,这个稍微复杂一点:

ky = 3;

knotsy = augknt([0:2.5:13],ky);

sp = spap2(knotsy,ky,y,z);

yy = 0:.5:12;

vals = fnval(sp,yy);

coefsy = fnbrk(sp,?c');

kx = 5;

knotsx = augknt([1:4:5],kx);

sp2 = spap2(knotsx,kx,x,coefsy.?);

coefs = fnbrk(sp2,?c').?;

xv = 1:.25:5;

yv = 1:.5:12;

values = spcol(knotsx,kx,xv)*coefs*spcol(knotsy,ky,yv).?; surf(yv,xv,values)

title(?After Polynal data Plot?);

xlabel(?X'), ylabel(?Y'), zlabel(?Z');

colormap, colorbar;

axis([0 15 0 6 0.2 0.55])

图上面的小圆点使用plot3画出来的原始数据点,具体怎么添加的方法我就不多说了。需要把不等边矩阵转换成等边矩阵然后再画图。

效果从上面三个图上面已经看出来了。基本上满足了现在画图的要求,如果测量值比较精确,我们选择第二种方法插值法来画图,如果觉得测量值不是很精确需要用拟合的方法的话,那当然用第三种方法了。

附录:

Matlab 样条工具箱(Spline ToolBox)【信息来源教师博客】

Matlab样条工具箱中的函数提供了样条的建立,操作,绘制等功能;

一. 样条函数的建立

第一步是建立一个样条函数,曲线或者曲面。这里的样条函数,根据前缀,分为4类:

cs* 三次样条

pp* 分段多项式样条,系数为t^n的系数

sp* B样条,系数为基函数B_n^i(t)的系数

rp* 有理B样条

二. 样条操作

样条操作包括:函数操作:求值,算术运算,求导求积分等等

节点操作:主要是节点重数的调节,设定,修改等等

附:样条工具箱函数

1. 三次样条函数

csapi 插值生成三次样条函数

csape 生成给定约束条件下的三次样条函数

csaps 平滑生成三次样条函数

cscvn 生成一条内插参数的三次样条曲线

getcurve 动态生成三次样条曲线

2. 分段多项式样条函数

ppmak 生成分段多项式样条函数

ppual 计算在给定点处的分段多项式样条函数值

3. B样条函数

spmak 生成B样条函数

spcrv 生成均匀划分的B样条函数

spapi 插值生成B样条函数

spap2 用最小二乘法拟合生成B样条函数

spaps 对生成的B样条曲线进行光滑处理

spcol 生成B样条函数的配置矩阵

4. 有理样条函数

rpmak 生成有理样条函数

rsmak 生成有理样条函数

5. 样条操作函数

fnval 计算在给定点处的样条函数值

fmbrk 返回样条函数的某一部分(如断点或系数等)

fncmb 对样条函数进行算术运算

fn2fm 把一种形式的样条函数转化成另一种形式的样条函数fnder 求样条函数的微分(即求导数)

fndir 求样条函数的方向导数

fnint 求样条函数的积分

fnjmp 在间断点处求函数值

fnplt 画样条曲线图

fnrfn 在样条曲线中插入断点。

fntlr 生成tarylor系数或taylor多项式

6. 样条曲线端点和节点处理函数

augknt 在已知节点数组中添加一个或多个节点

aveknt 求出节点数组元素的平均值

brk2knt 增加节点数组中节点的重次

knt2brk 从节点数组中求得节点及其重次

knt2mlt 从节点数组中求得节点及其重次

sorted 求出节点数组的元素在另一节点数组中属于第几个分量aptknt 求出用于生成样条曲线的节点数组

newknt 对分段多项式样条函数进行重分布

optknt 求出用于内插的最优节点数组

chbpnt 求出用于生成样条曲线的合适节点数组

2 Responses to “Matlab 曲面插值和拟合”

如果我只有三,四个已知三维坐标的点,能不能做到拟合呢?我用你上面的方法,用surf画了一下,

t=csvread(?c:/www/dat/1chang.csv?);

x=[t(1,1,1),t(1,4,1),t(1,7,1),t(1,10,1)];

y=[t(1,2,1),t(1,5,1),t(1,8,1),t(1,11,1)];

z=[t(1,3,1),t(1,6,1),t(1,9,1),t(1,12,1)];

surf(x,y,z)

title(?Original data Plot?);

xlabel(?X?), ylabel(?Y?), zlabel(?Z?),

colormap, colorbar;

axis equal

结果只出来坐标轴,没有任何关于我的点的东西,不知道为什么,希望给与指点

并不是数据太少,理论上3点就可以确定一个面,所以不是数据多少的问题,而是数据格式不对,你的坐标可能只是离散的坐标,这样子只能够画三维曲线出来,而不能画面。你可以试试用plot3应该可以画出你的数据来。

如果你想画曲面,要把数据整理成固定的格式,下面一个简单的例子,希望对你有帮助,你可以看出来,只有四个点也是可以画出曲面来的。

x=[1:1:2]

y=[1:1:2]

[xx,yy]=meshgrid(x,y)

z=[4.1,4.2;4.3,4.4]

surf(x,y,z)

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绘制曲线图

如何用M a t l a b绘制曲 线图 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

各位同学:在写论文和报告时,为了很好地表达你研究和开发的结果,不仅要用文字详细地描述你方法、步骤和结果,还必须配以各种图来说明问题。下面是我们实验室张媛媛老师申请博士学位论文中的部分曲线图、硬件框图、软件流程图和实验装置原理框图。她将在部分曲线图下面给出绘制图形的Matlab程序和相关步骤,供大家学习和参考。 例一: 图2-3-6 动态线性环节的输入输出信号图2-3-7 模型输出和消噪后实验时数据比较1,输入信号u(k);2,输出信号y(k) 1,实验数据;2,模型输出 绘图程序如下: figure(1) plot(t,y,'k',t,x,'k','LineWidth', 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,,]); set(gca,'box','on','fontname','宋体','Fontsize',9);

用MATLAB画曲线族

用MATLAB画曲线族 (y-c)^2-2/3*(x-c)^3=0的包络线 1 求包络线的方程 syms x y c; f = (y-c)^2-2/3*(x-c)^3 dfc = diff(f, c) S = solve(f,dfc) S1x = S.x S1y = S.y 计算结果: 该曲线族有两条包络线: ① x1 = c1 ; y1 = c1 ; ② x1 = c1 + 2/3; y1 = c1 + 4/9; 2 画线 close all clear,clc warning('off') figure % 曲线族 hold on for c = -10:0.5:10 x = -10:0.1:10; y = (2/3)^0.5.*(x-c).^1.5 + c; plot(x,y) end % 包络线 c1 = -10:0.1:10; x1 = c1 ; y1 = c1 ; plot(x1,y1,'r','LineWidth',2)

figure % 曲线族 hold on for c = -10:0.5:10 x = -10:0.1:10; y = -(2/3)^0.5.*(x-c).^1.5 + c; plot(x,y) end % 包络线 c1 = -10-2/3:0.1:10-2/3; x1 = c1 + 2/3; y1 = c1 + 4/9; plot(x1,y1,'r','LineWidth',2)

............................ 包络线 跳转到:导航, 搜索

在几何学,某个曲线族的包络线(Envelope),是跟该曲线族的每条线都有至少一点相切的一条曲线。(曲线族即一些曲线的无穷集,它们有一些特定的关系。) 设一个曲线族的每条曲线C s可表示为 ,其中s是曲线族的参数,t是特定曲线的参数。若包络线存在,它是由 得出,其中h(s)以以下的方程求得:

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.wendangku.net/doc/bf17726848.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]); %傅里叶逆变换

Matlab绘制频散曲线程序代码(20210119130722)

Matlab绘制频散曲线 程序代码 -CAL-FENGHAI-(2020YEAR-YI function disper %绘制平板频散曲线 %tic

clc;clear; cl=5790;%材料纵波波速(钢板) cs=3200;%材料横波波速(钢板) dfd=*le3; fdO=:dfd/le3:2O)*le3;%频厚积(MHz*mm) d_Q235二6; cps_mi n二2700; cpa_min=100; cp_max=10000; mode=3;%绘制的模式数 precision=le-8; cpa=zeros(length(fdO),mode); cps=zeros(le ng th(fdO),mode); for i=l:length(fdO) fd=fdO(i); [cpl2 n]=ss(cps_min/cp_max/fd/cl,cs,mode); for j=l:n cpl=cpl2(j,l); cp2=cpl2(j,2); cps(i,j)=serfe n(cpl,cp2,fctcl£S'precisi on); end [cpl2 n]=aa(cpa_min,cp_max/fd/cl/cs,mode); for j=l:n cpl=cpl2(j,l); cp2=cpl2(j,2); cpa(ij)=aerfe n(cpbcp2,fd£l‘cs,precisi on); end end h=zeros(mode,2); %相速度 figure(l) for j=l:2 ifj==l cp=cps; color=,b,; else cp=cpa; color二T; end for i=l:mode cpp=cp(:,i); in d=fi nd(cpp==0); if ^isempty(ind) h(i/j)=plot((fdO(ind(end)+l:end))/d_Q235/cpp(ind(end)+l:end),color); else h(i/j)=plot(fdO/d_Q235,cpp/color); end hold on end ifj==2 xlabel('f/(KHz)') ylabel('C_{p}/(km-sA{-l})')

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

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

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

MATLAB绘制平滑曲线

MATLAB绘制平滑曲线 x=[0.1 0.16 0.27 0.41 0.48 0.59 0.8]; y=[8 70 118 100 9 0 5]; 以上是每一个X和Y对应的坐标,请问如何编程能够绘制平滑曲线,这个图形就像二次函数一样的如果要在图中绘制一条直线加上y=70的直线,用不同颜色区分! x=[0 0.1 0.16 0.27 0.41 0.48 0.59 0.8]; y=[5 9 70 118 100 17 0 5]; y1=[22.8 22.8 22.8 22.8 22.8 22.8 22.8 22.8]; values1=spcrv([[x(1) x x(end)];[y(1) y y(end)]],3,1000); values2=spcrv([[x(1) x x(end)];[y1(1) y1 y1(end)]],3,1000); plot(values1(1,:),values1(2,:),'r',values2(1,:),values2(2,:),'b') ans2: 代码如下: x=[0.1 0.16 0.27 0.41 0.48 0.59 0.8]; y=[8 70 118 100 9 0 5]; xp=0:0.1:1; yp=interp1(x,y,xp); plot(x,y,'b-',xp,yp,'r-')%红色为差值后的平滑图像 hold on y1=70; plot(xp,y1,'c-') % 自己试一下

ans3: x=[0.1 0.16 0.27 0.41 0.48 0.59 0.8]; y=[8 70 118 100 9 0 5]; X=linspace(0,.9); Y=spline(x,y,X); plot(x,y,'ro',X,Y,X,70+0*X) another file: >help smooth自己查一下帮助 another question: x有90个值,Y也有90个值,一一对应,用PLOT(x,y)后是折线,请问怎样把它改为平滑曲线,谢谢! ans: 平滑曲线的话,建议你用 样条插值。 比方说,已知的数据是X,Y 你将X的间隔变小一些赋于xi

Matlab绘制频散曲线程序代码

function disper %绘制平板频散曲线 %tic clc;clear; cl=5790;%材料纵波波速(钢板) cs=3200;%材料横波波速(钢板) dfd=0.01*1e3; fd0=(0.01:dfd/1e3:20)*1e3;%频厚积(MHz*mm)d_Q235=6; cps_min=2700; cpa_min=100; cp_max=10000; mode=3;%绘制的模式数 precision=1e-8; cpa=zeros(length(fd0),mode); cps=zeros(length(fd0),mode); for i=1:length(fd0) fd=fd0(i); [cp12 n]=ss(cps_min,cp_max,fd,cl,cs,mode); for j=1:n cp1=cp12(j,1); cp2=cp12(j,2); cps(i,j)=serfen(cp1,cp2,fd,cl,cs,precision); end [cp12 n]=aa(cpa_min,cp_max,fd,cl,cs,mode); for j=1:n cp1=cp12(j,1); cp2=cp12(j,2); cpa(i,j)=aerfen(cp1,cp2,fd,cl,cs,precision); end end h=zeros(mode,2); %相速度 figure(1) for j=1:2 if j==1 cp=cps; color='b'; else cp=cpa; color='r'; end for i=1:mode cpp=cp(:,i); ind=find(cpp==0);

教你如何用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.wendangku.net/doc/bf17726848.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绘制曲线图

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

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曲线绘制大全

一、二维数据曲线图 1.1 绘制单根二维曲线 plot 函数的基本调用格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。 例1-1 在0≤x≤2p区间内,绘制曲线 y=2e-0.5xcos(4πx) 程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(4*pi*x); plot(x,y) 例1-2 绘制曲线。 程序如下: t=0:0.1:2*pi; x=t.*sin(3*t); y=t.*sin(t).*sin(t); plot(x,y); plot函数最简单的调用格式是只包含一个输入参数: plot(x) 在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。1.2 绘制多根二维曲线 1.plot函数的输入参数是矩阵形式 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (3) 对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。 当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。

2.含多个输入参数的plot函数 调用格式为: plot(x1,y1,x2,y2,…,xn,yn) (1) 当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。 (2) 当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 例1-3 分析下列程序绘制的曲线。 x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1); y2=1+sin(x2); y3=2+sin(x3); x=[x1;x2;x3]'; y=[y1;y2;y3]'; plot(x,y,x1,y1-1) 3.具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。 例1-4 用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); plotyy(x,y1,x,y2); 4.图形保持 hold on/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。 例1-5 采用图形保持,在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); plot(x,y1)

应用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画曲线

1、在直角坐标系下绘制(同一个窗口): 笛卡尔叶形线、星形线、摆线; %在直角坐标系下绘制(同一个窗口):笛卡尔叶形线、星形线、摆线;clc figure %Descartes folium theta_1=-2*pi:0.01:2*pi;%角度 t=tan(theta_1); a=1; x1=3*a*t./(1+t.^3);%参数方程 y1=3*a*t.^2./(1+t.^3);%参数方程 subplot(1,3,1);plot(x1,y1); legend('笛卡尔叶形线'); axis([-4,4,-4,4]);%只显示局部 grid on; %星形线 a=2; theta=-2*pi:0.01:2*pi; x2=a*cos(theta).^3; y2=a*sin(theta).^3; subplot(1,3,2);plot(x2,y2); legend('星形线'); axis([-4,4,-4,4]);%只显示局部 grid on; %摆线 a=2; theta=-2*pi:0.001:2*pi; x3=a.*(theta-sin(theta)); y3=a.*(1-cos(theta)); subplot(1,3,3);plot(x3,y3); legend('摆线'); axis([-8,8,-8,8]);%只显示局部 grid on; 2、在极坐标系下绘制(加注释): 心形线,对数螺线、四叶玫瑰线 %在极坐标系下绘制(加注释):心形线 clc figure %心形线 a=2; t=-2*pi:0.01:2*pi;

r=a.*(1+cos(t)); r=a.*(1+sin(t)); polar(t,r); legend('心形线'); %在极坐标系下绘制(加注释):对数螺线clc figure %对数螺线 a=0.1; t=-2*pi:0.001:2*pi; r=exp(a*t); polar(t,r); legend('对数螺线'); %在极坐标系下绘制(加注释):四叶玫瑰线clc figure %四叶玫瑰线 a=4; t=-2*pi:0.001:2*pi; r=a*sin(2*t); polar(t,r); legend('四叶玫瑰线'); 3、绘制双曲抛物面、单叶双曲面。 %双曲抛物面 clc sqra=1; sqrb=4; [x,y]=meshgrid(-2:0.01:2); z=(x.^2/sqra-y.^2/sqrb)/2; plot3(x,y,z); legend('双曲抛物面'); %单叶双曲面 clc xi=-10:0.1:10; yi=xi; [x,y]=meshgrid(xi,yi); a=1;b=1;c=1; z=c^2*(x.^2/a^2+y.^2/b^2+1); mesh(x,y,z);

Matlab绘制三维图

二.三维绘图 一.绘制三维曲线的基本函数 最基本的三维图形函数为plot3,它将二维绘图函数plot的有关功能扩展到三维空间,可以用来绘制三维曲线。其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot的选项一样。当x,y,z是同维向量时,则x,y,z对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵的列数。 例513 绘制空间曲线 该曲线对应的参数方程为 t=0:pi/50:2*pi; x=8*cos(t); y=4*sqrt(2)*sin(t); z=-4*sqrt(2)*sin(t); plot3(x,y,z,'p'); title('Line in 3-D Space'); text(0,0,0,'origin'); xlabel('X');ylabel('Y');zlabel('Z');grid; 二.三维曲面 1.平面网格坐标矩阵的生成 当绘制z=f(x,y)所代表的三维曲面图时,先要在xy平面选定一矩形区域,假定矩形区域为D=[a,b]×[c,d],然后将[a,b]在x方向分成m份,将[c,d]在y方向分成n份,由各划分点做平行轴的直线,把区域D分成m×n个小矩形。生成代表每一个小矩形顶点坐标的平面网格坐标矩阵,最后利用有关函数绘图。 产生平面区域内的网格坐标矩阵有两种方法: 利用矩阵运算生成。 x=a:dx:b; y=(c:dy:d)’; X=ones(size(y))*x;

Y=y*ones(size(x)); 经过上述语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素个数,矩阵Y的每一列都是向量y,列数等于向量x的元素个数。 利用meshgrid函数生成; x=a:dx:b; y=c:dy:d; [X,Y]=meshgrid(x,y); 语句执行后,所得到的网格坐标矩阵和上法,相同,当x=y时,可以写成meshgrid(x) 2.绘制三维曲面的函数 Matlab提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用来绘制三维网格图,而surf 用来绘制三维曲面图,各线条之间的补面用颜色填充。其调用格式为: mesh(x,y,z,c) surf(x,y,z,c) 一般情况下,x,y,z是维数相同的矩阵,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。c省略时,Matlab认为c=z,也即颜色的设定是正比于图形的高度的。这样就可以得到层次分明的三维图形。当x,y省略时,把z矩阵的列下标当作x轴的坐标,把z矩阵的行下标当作y轴的坐标,然后绘制三维图形。当x,y是向量时,要求x的长度必须等于z矩阵的列,y的长度必须等于必须等于z的行,x,y向量元素的组合构成网格点的x,y坐标,z坐标则取自z矩阵,然后绘制三维曲线。 例515 用三维曲面图表现函数: 为了便于分析三维曲面的各种特征,下面画出3种不同形式的曲面。 %program 1 x=0:0.1:2*pi; [x,y]=meshgrid(x); z=sin(y).*cos(x); mesh(x,y,z); xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis'); title('mesh'); pause; %program 2 x=0:0.1:2*pi;

Matlab画二维曲线

1.plot 函数 clear all; x=0:0.01:5; y=x.*exp(-2*x); figure; plot(x,y);%绘图 2.常用设置 Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示: 设置曲线线宽、标记点大小,标记点边框颜色和标记点填充颜色等。 plot(…,’Property Name’, Property Value, …) Property Name 意义选项

LineWidth 线宽数值,如0.5,1等,单位为points MarkerEdgeColor 标记点边框线条颜色颜色字符,如’g’, ’b’等 MarkerFaceColor 标记点内部区域填充颜色颜色字符 MarkerSize 标记点大小数值,单位为points %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear all; x=-pi:pi/10:pi; y=tan(sin(x))-sin(tan(x)); figure;plot(x,y,'--rs','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','k ','MarkerSize',10);%设置线宽(单位points),点边框颜色,点颜色,点大小 3.绘制多条曲线 clear all; x=-pi:pi/10:pi; y=[sin(x);sin(x+1);sin(x+2)]; z=[cos(x);cos(x+1);cos(x+2)]; figure; plot(x,y,'r:*',x,z,'g-.v')

MATLAB三维绘图

三维绘图 1 三维绘图指令 类别指令说明 网状图 mesh, ezmesh 绘制立体网状图 meshc, ezmeshc 绘制带有等高线的网状图meshz 绘制带有“围裙”的网状图 曲面图 surf, ezsurf 立体曲面图 surfc, ezsurfc 绘制带有等高线的曲面图surfl 绘制带有光源的曲面图 曲线图plot3, ezplot3 绘制立体曲线图 底层函数surface Surf函数用到的底层指令line3 plot3函数用到的底层指令 等高线contour3 绘制等高线 水流效果waterfall 在x方向或y方向产生水流效果 影像表示pcolor 在二维平面中以颜色表示曲面的高度2 基本XYZ立体绘图命令 mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。 下列命令可画出由函数形成的立体网状图: x=linspace(-2, 2, 25); % 在x轴上取25点 y=linspace(-2, 2, 25); % 在y轴上取25点 [xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵 zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵 mesh(xx, yy, zz); % 画出立体网状图

●surf和mesh的用法类似: x=linspace(-2, 2, 25); % 在x轴上取25点 y=linspace(-2, 2, 25); % 在y轴上取25点 [xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵 zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是25x25的矩阵 surf(xx, yy, zz); % 画出立体曲面图 ●peaks 为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:

相关文档