null
MATLAB 软件及其应用
MATLAB 软件及其应用王林君
江苏大学理学院
Application of Matlab Language数据和函数的可视化数据和函数的可视化引言引言世界顶级的数值计算工具软件MATLAB具有极其强大的数据可视化功能,可制作具有出版质量图形。
详细介绍MATLAB这一部分的内容可以写一本书。
我们只能介绍MATLAB数据可视化的基础,2-D数据可视化、3-D数据可视化初步。
二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用直角坐标系、对数坐标、极坐标等形式。数据点可以用向量或矩阵形式给出,类型可以是实型或复型。nullnull3.1 二维曲线绘图的基本操作3.1 二维曲线绘图的基本操作plot指令的基本调用格式
(1)plot(x)
x为向量时,以该元素的下标为横坐标、元素值为纵坐标绘出曲线
x为实数二维数组时,则按列绘制每列元素值相对其下标的曲线,曲线数等于x数组的列数。
x为复数二维数组时,则按列分别以数组的实部和虚部为横、纵坐标绘制多条曲线
(2)plot(x, y)
x、y为同维数组时,绘制以x、y元素为横纵坐标的曲线
x为向量,y为二维数组、且其列数或行数等于x的元素数时,绘制多条不同颜色的曲线
x为二维数组,y为向量时,情况与上相同,只是y仍为纵坐标。
(3)plot(x1, y1, x2, y2, …)
绘制以x1为横坐标、y1为纵坐标的曲线1,以x2为横坐标、y2为纵坐标的曲线2,等等。
其中x为横坐标,y为纵坐标,绘制y=f(x)函数曲线。 例3.1使用直角坐标系例3.1使用直角坐标系在[0,2π]区间内,绘制曲线
x = 0:pi/100:2*pi;
y = 2*exp(-0.5*x).*sin(2*pi*x);
plot(x,y)例3.2 使用参数方程绘制曲线例3.2 使用参数方程绘制曲线绘制曲线
t = -pi:pi/100:pi;
x = t.*cos(3*t);
y = t.*sin(t).^2;
plot(x,y)
例3.3 绘制复杂曲线例3.3 绘制复杂曲线用图形
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示连续调制波形 及其包络线。
t=(0:pi/100:pi)’; %长度为101的时间采样列向量
y1=sin(t)*[1,-1]; %包络线函数值,是(101x2)的矩阵
y2=sin(t).*sin(9*t); %长度为101的调制波列向量
t3=pi*(0:9)/9;
y3=sin(t3).*sin(9*t3);
plot(t,y1,'r:',t,y2,'b',t3,y3,'bo')
axis([0,pi,-1,1]) %控制轴的范围 nullMatlab作图通过描点、连线实现,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标、纵坐标),然后将该点集的坐标传给Matlab函数画图。 命令:
PLOT(X,Y,S)PLOT(X,Y)--画实线
PLOT(X1,Y1,S1,X2,Y2,S2,……,Xn,Yn,Sn)
--将多条线画在一起X,Y:向量,分别表示点集的横坐标和纵坐标线型y 黄色 . 点 - 连线
m 洋红 o 圈 : 短虚线
c 蓝绿色 x x-符号 -. 长短线
r 红色 + 加号 -- 长虚线1.曲线图null解例 在[0,2*pi]用红线画sin(x),用绿圈画cos(x).x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,'r',x,z,’g0')null2.符号函数(显函数、隐函数、参数方程)画图(1)ezplotezplot(‘x(t)’,’y(t)’,[tmin,tmax]) :
在区间tmin
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
见下表。 图形标识(续)图形标识(续)例3.12在正弦曲线上标注特殊值例3.12在正弦曲线上标注特殊值
t=(0:100)/100*2*pi;
y=sin(t);
plot(t, y)
text(3*pi/4,sin(3*pi/4), '\fontsize{16}\leftarrowsin(t) = .707 ')
text(pi, sin(pi), '\fontsize{16}\leftarrowsin(t) = 0 ')
text(5*pi/4, sin(5*pi/4), '\fontsize{16}sin(t) = -.707\rightarrow',...
'HorizontalAlignment','right')
其中,‘HorizontalAlignment’, ‘right’设置图形标识为水平右对齐
例3.13例3.13 t = 0:900;
plot(t,0.25*exp(-0.005*t))
title('\fontsize{16}\itAe^{\alphat}');
text(300,.25*exp(-0.005*300),...
'\fontsize{14}\leftarrow0.25\ite^-0.005\itt at \itt = 300');
2. 特殊图形2. 特殊图形直方图(柱形图)bar
垂直直方图
累计式
分组式
水平直方图
累计式
分组式例3.15例3.15x = -2.9:0.2:2.9;
bar(x,exp(-x.*x),'r')例3.16例3.16北京市从业人员统计
1990年 1995年 2000年
第一产业 90.7 70.6 73.9(万人)
第二产业 281.6 271 214.6
第三产业 254.8 323.7 326.5
执行以下语句:
year=[1990 1995 2000];
people=[90.7 281.6 254.8; 70.6 271 323.7; 73.9 214.6 326.5];
bar(year, people, ‘stack’);
legend(‘\fontsize{6}第一产业’, ‘\fontsize{6}第二产业’, ‘\fontsize{6}第三产业');null累计式直方图nullbar(year, people, ‘group’); % 分组式直方图
legend(‘\fontsize{6}第一产业’, ‘\fontsize{6}第二产业’, ‘\fontsize{6}第三产业');nullbarh(year, people, ‘group’); % 分组式直方图
legend(‘\fontsize{6}first’, ‘\fontsize{6}second’, ‘\fontsize{6}third');nullbarh(year, people, ‘stack’); % 累积式直方图
legend(‘\fontsize{6} first’, ‘\fontsize{6}second’, ‘\fontsize{6}third');饼图指令pie 饼图指令pie 饼图指令pie 用来表示各元素占总和的百分数。该指令第二输入变量是与第一变量同长的0-1向量,1使对应扇块突出。
a=[1,1.6,1.2,0.8,2.1];
subplot(1,2,1),pie(a,[1 0 1 0 0]),
legend({'1','2','3','4','5'})
subplot(1,2,2), b=int8(a==min(a))
pie3(a,b)
colormap(cool) null3. 三维绘图的基本操作3. 三维绘图的基本操作三维线图指令plot3
三维绘图指令中,plot3最易于理解,它的使用格式与plot十分相似,只是对应第3 维空间的参量。
t=(0:0.02:2)*pi;
x=sin(t);
y=cos(t);
z=cos(2*t);
plot3(x,y,z,'b-',x,y,z,'bd');
view([-82,58]);
box on
legend('链','宝石') 三维线图绘制结果三维线图绘制结果三维网线图(mesh)和曲面图(surf)三维网线图(mesh)和曲面图(surf)画函数z=f(x,y)所代表的三维空间曲面,需要做以下的数据准备工作:
确定自变量的取值范围和取值间隔。
x=x1:dx:x2;
y=y1:dy:y2;
构成x-y平面上的自变量采样“格点”矩阵。
利用MATLAB指令meshgrid产生“格点”矩阵
[xa, ya]=meshgrid(x,y) ;
计算函数在自变量采样“格点”上的函数值,即z=f(x,y)。
网线图、曲面图绘制。举例举例绘制函数z=x^2+y^2的曲面
x=-4:4;y=x;
[x,y]=meshgrid(x,y); %生成 x-y 坐标“格点”矩阵
z=x.^2+y.^2; %计算格点上的函数值
subplot(1,2,1), mesh(x,y,z); %三维网格图
subplot(1,2,2), surf(x,y,z); %三维曲面图
colormap(hot); null函数z=x^2+y^2的曲面的绘制结果Matlab程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
Matlab程序设计Matlab命令的执行方式Matlab命令的执行方式交互式命令执行方式(命令窗口)
逐条输入,逐条执行,操作简单、直观,但速度慢,执行过程不能保留。
M文件的程序执行方式
将命令编成程序存储在一个文件中(M文件),依次运行文件中的命令,可以重复进行。
Matlab程序设计有传统高级语言的特征,又有自己独特的特点,可以利用数据结构的特点,使程序结构简单,编程效率高。5.1 M文件的分类5.1 M文件的分类用Matlab语言编写的程序,称为M文件。
是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。
M文件根据调用方式的不同分为两类:
命令文件(Script File)
函数文件(Function File)
它们的扩展名都是.m命令文件和函数文件的区别命令文件和函数文件的区别命令文件没有输入参数,也不返回输出参数;函数文件可以带输入参数,也可以返回输出参数。
命令文件对工作空间中的变量进行操作,文件中所有命令的执行结果也返回工作空间中;函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量也被清除。
命令文件可以直接运行;函数文件不能直接运行,要以函数调用的方式来调用它。M文件的建立与打开M文件的建立与打开 M文件是一个文本文件,可以用任何编辑程序来建立和编辑,一般最常用的是使用Matlab提供的文本编辑器。
该编辑器是一个集编辑和调试于一体的工作环境。5.2 程序控制结构5.2 程序控制结构顺序结构
选择结构
循环结构
任何复杂的程序都可以由这3种基本结构构成。
1.函数文件格式1.函数文件格式函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。事实上,MATLAB提供的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
函数大部分都是由函数文件定义的。四. 函数文件函数文件由function语句引导,其格式为:
function 输出形参表=函数名(输入形参表)
注释说明部分
函数体
注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。【例9】 编写函数文件求小于任意自然数n的Fibonacci数列各项。【例9】 编写函数文件求小于任意自然数n的Fibonacci数列各项。 function f=ffib(n)
%用于求Fibonacci数列的函数文件
%f=ffib(n)
%1999年9月30日编
f=[1,1];
i=1;
while f(i)+f(i+1)>后输入变量名,检查变量的值。可以分析判断程序 的正确性。
③ 选择Debug菜单中的Continue命令,程序继续运行,在断点处又暂停,再检查
变量的值,一直到发现问题为止。
④ 切换工作空间,结束对程序的调试。打开编辑窗口中的Stack下拉列表框,从
中选择Base,即将工作空间切换到主工作空间。然后选择Debug菜单中的Set
Clear Breakpoint 命令清楚已设置的断点,在选择Continue命令,去除白色
箭头,完成调试。矩阵求逆与线性方程组求解矩阵求逆与线性方程组求解5.6.1 矩阵的逆
对于一个方阵A,如果存在一个与其同阶的方阵B,使得:
(I为单位矩阵)
则称B为A的逆矩阵,当然,A也是B的逆矩阵。求方阵A的逆矩阵可
调用函数inv(A)。
例5.18 求方阵A的逆矩阵,且验证。
A = [1,-1,1;5,-4,3;2,1,1];
B = inv(A);
A*B
ans =
1.0000 0 0
-0.0000 1.0000 0
-0.0000 0 1.0000
用矩阵求逆方法解线性方程组 用矩阵求逆方法解线性方程组 将包含n个未知数,由n个方程构成的线性方程组表示为:
其矩阵表示形式为:
其中:
求逆矩阵的方法解线性方程组 求逆矩阵的方法解线性方程组命令如下:
A = [1,2,3;1,4,9;1,8,27];
b = [5,-2,6]’;
x = inv(A)*b %x = A\b
x =
23.0000
-14.5000
3.6667
也可以运用左除运算符求解。矩阵行列式值矩阵行列式值 把一个方程看做一个行列式,并按行列式的规则求值,称为行列式的值。在Matlab中,使用函数det(A)得到。
例如:
A = rand(5)
A =
0.9501 0.7621 0.6154 0.4057 0.0579
0.2311 0.4565 0.7919 0.9355 0.3529
0.6068 0.0185 0.9218 0.9169 0.8132
0.4860 0.8214 0.7382 0.4103 0.0099
0.8913 0.4447 0.1763 0.8936 0.1389
B = det(A)
B =
-0.0071Matlab数值计算Matlab数值计算多项式(polynomial) 问题多项式(polynomial) 问题多项式的MATLAB表达
多项式由一个行向量表示
该向量元素是该多项式的系数
且按降幂次序排列
如:多项式x4-12x3+25x+116由行向量:
p=[1 -12 0 25 116]表示。
注意,必须包括具有零系数的项。
求解多项式的根?
roots指令多项式(polynomial)问题多项式(polynomial)问题举例:求解多项式x4-12x3+25x+116的根
>>p=[1 -12 0 25 116]
p =
1 -12 0 25 116
>>r=roots(p)
r =
11.7473
2.7028
-1.2251 + 1.4672i
-1.2251 - 1.4672i
MATLAB按惯例规定,多项式是行向量,根是列向量多项式(polynomial)问题多项式(polynomial)问题已知多项式的根,求解多项式 ?
能!
使用poly指令
举例:由上例所得的根求其多项式
>> pp=poly(r)
pp =
1.0000 -12.0000 -0.0000 25.0000 116.0000
即:x4-12x3+25x+116 多项式(polynomial) 多项式(polynomial)多项式的乘法(conv指令)
举例:多项式a(x)=x3+2x2+3x+4
和b(x)= x3+4x2+9x+16的乘积。
>> a=[1 2 3 4] ; b=[1 4 9 16];
>> c=conv(a, b)
c =
1 6 20 50 75 84 64
两个以上的多项式的乘法需要重复使用conv. 多项式(polynomial)多项式(polynomial)多项式加法: MATLAB没有提供进行加法运算的函数。
如果两个多项式向量大小相同,标准的数组加法有效。
把多项式a(x)与上面给出的b(x)相加。
>> d=a+b
d =
2 6 12 20
结果: d(x)= 2x3+6x2+12x+20
当两个多项式阶次不同,低阶的多项式必须用首零填补,使其与高阶多项式有同样的阶次。
考虑上面多项式c和d相加:
>> e=c+[0 0 0 d]
e =
1 6 20 52 81 96 84
结果: d(x)= x6+6x5+20x4+52x3+81x2+96x+84多项式(polynomial)多项式(polynomial)多项式的除法(deconv)
举例说明:
c(x)=x6+6x5+20x4+50x3+75x2+84x+64
除以b(x)= x3+4x2+9x+16
>> c=[1 6 20 50 75 84 64];
>> b=[1 4 9 16];
>> [q , r]=deconv(c , b)
q =
1 2 3 4
r =
0 0 0 0 0 0 0多项式(polynomial)多项式(polynomial)多项式的导数 (polyder)
举例:求b(x)= x3+4x2+9x+16的导数。
>> b=[1 4 9 16];
>> d=polyder(b)
d =
3 8 9
结果为: 3x2+8x+9
另外两种形式为:
p = polyder(P,Q):求P*Q的导函数
[p,q] = polyder(P,Q):求P/Q的导函数,导数分子存入p,分母存入q
多项式(polynomial)多项式(polynomial)多项式的估值(polyval)
举例:绘制p(x) = x3+4x2-7x-10在[-1, 3]段上的曲线。
x=linspace(-1, 3); % choose 100 data points between -1and 3.
p=[1 4 -7 -10];
v=polyval(p, x);
plot(x, v);
title('x^{3}+4x^{2}-7x-10');
xlabel('x')多项式(polynomial)多项式(polynomial)p(x) = x3+4x2-7x-10在[-1, 3]段上的曲线: