资源描述
附录:MATLAB简介
第一部分 MATLAB基础
一、 MATLAB入门
启动MATLAB后,就进入命令窗口(Command Window),提示符为>>
1、简单的运算
例1 计算球体积
r=2; %有“;”不显示结果
v=4/3*pi*r^3 %没有“;”显示结果
注意:1、可多个命令写一行,命令间用“,”或“;”分开。
2、允许使用←↑→↓键来编辑前面的命令。
2、变量和数据
(1)变量有数值型和字符型两类,变量类型和数组大小无需预先定义。
(2)常用的常量
i或j―复数单位 pi― Inf―无穷大
(3)变量名以字母开头,后可跟字母、数字和下划线,区分大小写。
(4)变量查询用who或whos,清除变量用clear。
(5)数据显示格式是整数作为整数显示,实数显示4位小数,可通过format命令改变。
(6)数据保存用save,调用用load。
例2 变量定义、查询和清除
a=1+2*i
A=’This is a string’
who %变量查询
whos %变量查询
a %显示变量a的值
clear a A; %清除变量a和A
clear; %清除所有变量
例3 数据显示、保存和调用
b=5
c=pi
format rational;
c
format;
c
save; %当前所有变量和数据保存到数据文件matlab.mat
clear;
c
load;
c
3、数学函数
如 sin(A) asin(A) tan(A) cot(A) exp(A) sqrt(A) abs(A) log(A)
二、作图
图形可直接保存为M文件,也可以将其作为图片剪贴到WORD文档或其它应用程序中,图形的颜色、线型、标记均可设定。
1、曲线图
plot(x,y) 作出以数据(x(i),y(i))为节点的折线图
fplot(‘fun’,[a,b]) 作出函数fun在区间[a,b]上的曲线图
plot3(x,y,z) 作出空间曲线图
例4 作平面曲线的图形
x=-1:0.2:2;
y=abs(x).^2.*sin(5*x);
plot(x,y,’:ro’);
close;
fplot(‘x^3-x-1’,[-1,2])
close; %关闭已有图形窗口
fplot(‘[tan(x),sin(x),cos(x)]’,[-2*pi,2*pi,-2*pi,2*pi])
例5 作空间曲线的图象
clear; close;
t=0:0.1:20; r=exp(-0.2*t); h=0.5*pi*t;
x=r.*cos(h); y=r.*sin(h); z=t;
plot3(x,y,z)
2、曲面图
[x,y]=meshgrid(xa,ya) 生成x-y平面上的网格数据
mesh(x,y,z) 绘制网面图
例6 作曲面图象
clear; close; %关闭已有图形窗口
xa=-2:0.2:2; ya=xa;
[x,y]=meshgrid(xa,ya);
z=x.*exp(-x.^2-y.^2);
mesh(x,y,z)
三、符号运算
符号运算的变量、表达式均为符号对象,应当用sym或syms生成。如
syms a,b,c; %生成符号变量a,b,c
例7 多项式运算举例
syms x; f=(x-1)^3; g=(x+1)^3;
h=f*g
s=expand(h) %展开
hf=factor(s) %因式分解
hsub=subs(s,x,x^2+x+1) %变量代换
hsim=simple(hsub) %化简
四、代数方程(组)求根
roots 求多项式方程的根
fzero 求一元函数在[a,b]的实根(要求函数在a,b两点异号)
fsolve 求方程(组)的数值解
solve 方程(组)求解
例8 求方程的根
roots([1 2 0 -5])
例9 求方程在[2,6]中的实根
fzero(‘sin(x)-0.1*x’,[2,6])
例10 解方程组
[x,y,f]=fsolve(‘[4*x(1)-x(2)+exp(x(1))/10-1 , -x(1)+4*x(2)+x(1)^2/8]’,[0,0])
例11 求方程和方程组的根
solve(‘x^2-3*x+exp(x)-2’,’x’)
solve(‘x^2-3*x+exp(x)=2’)
[x,y]=solve(‘x^2+x*y+y=3’,’x^2-4*x+3=0’)
五、曲线插值与拟合
1、一维插值
Y1=interp1(X,Y,X1,’method’)
其中X和Y为原始数据点;X1为加细的数据点或是我们希望得到插值数据的数据点。
method是指定插值方法:
linear 线性插值
spline 三次样条插值
cubic 三次插值
pp=spline(x,y) 得到样条插值的分段多项式
[b,c]=unmkpp(pp) b显示样条函数的结点,c显示样条函数的各个分段三次多项式的系数.
例12 三次多项式插值
clear;close;
x=linspace(0,2*pi*300,19);
y=[502.8 ,525.0,514.3,451.0,326.5,188.6,92.2,59.6,62.2,102.7,147.1,191.6,236.0,280.5,324.9,369.4413.8,458.3,502.8];
plot(x,y,’o’);axis([0,2000,0,550]);
可见,可以用三次多项式插值,下面画出柱高插值曲线图。
xi=0:2*pi*300;
yi=interp1(x,y,xi,’cubic’);
plot(xi,yi);
例13 三次样条插值
x=1:12;
y=[5 6 9 15 25 29 31 30 22 25 27 24];
close; plot(x,y,x,y,’+’)
pp=spline(x,y);
[b,c]=unmkpp(pp)
例14 三次样条插值
t=[0 0.921 1.843 2.949 3.871 4.978 5.9 7.006 7.982 8.967 10.954 12.032 12.954 13.875 14.982 15.903 16.826 17.931 19.037 19.959 20.839 22.958 23.88 24.986 25.908];
r=[54.516 42.320 38.085 41.679 33.297 37.814 30.748 38.455 32.122 41.718 73.686 76.434 71.686 60.19 68.333 59.217 52.011 56.626 63.023 54.859 55.439 57.602 57.766 51.891 36.464];
plot(t,r,’b+’); % (t,r)表示时间和流速
title(‘流速散点图’);xlabel(’时间(小时)’); ylabel(‘流速(立方米/小时)’)
使用MATLAB软件中的三次样条插值命令得到用水率函数如下图所示。
x0=t;y0=r;
[l,n]=size (x0); dl=x0(n)-x0(1);
x=x0(1):1/3600:x0(n); %被插值点
ys=interp1 (x0,y0,x,’spline’); %样条插值输出
plot (x,ys);
title(‘样条插值下的流速图’);xlabel(’时间(小时)’); ylabel(‘流速(立方米/小时)’)
2、二维插值
ZI=interp2(x,y,z,xi,yi) 使用双线性插值
ZI=interp2(x,y,z,xi,yi,’spline’) 使用二元三次样条插值
ZI=interp2(x,y,z,xi,yi,’cubic’) 使用二元三次插值
其中x,xi为行向量,y,yi为列向量,z为矩阵。
ZI=griddata (x,y,z,xi,yi) 使用三角形线性插值
ZI=griddata (x,y,z,xi,yi,’cubuc’) 使用三角形三次插值
其中x,y,z均为向量(不必单调)xi,yi为网格向量。
例15 二元函数插值
x=[129 140 108 88 185 195 105 157 107 77 145 162 162 117];
y=[7 141 28 147 22 137 85 -6 -81 3 45 -66 84 -38];
z=[4 8 6 8 6 8 8 9 9 8 8 9 4 9];
h=-z;xi=75:5:200;yi=[-50:10:150]’;
hi=griddate(x,y,h,xi,yi,’cubic’); %采用三角形三次插值
mesh(xi,yi,hi);view(-60,30);
contour(xi,yi,hi,[-5,-5],’k’) %等高线图
3、曲线拟合
p=polyfit(x,y,n) 按n次多项式拟合
例16 线性函数拟合
x=[100 110 120 130 140 150 160 170 180 190];
y=[45 51 54 61 66 70 74 78 85 89];
close; plot(x,y)
p=polyfit(x,y,1)
例17 非线性函数化为线性函数拟合
t=[0 1 2 3 4 5 6 7 8 9 10];
u=[100 75 55 40 30 20 15 10 10 5 5];
close; plot(t,u)
T=t; U=log(u);
p=polyfit(T, U,1)
b=p(1)
a=exp(p(2))
例18 多项式函数拟合
x=[34 36 37 38 39 39 39 40 40 41 42 43 43 45 47 48];
y=[1.30 1.00 0.73 0.90 0.81 0.70 0.60 0.50 0.44 0.56 0.30 0.42 0.35 0.40 0.41 0.60];
close; plot(x,y)
p=polyfit(x,y,2)
xi=linspace(34,48,1000); %绘图的X轴数据
z=polyval(p,xi); %得到多项式在数据点处的值
close; plot(x,y,’ko’,xi,z,’r-’)
展开阅读全文