当前位置:文档之家› Matlab教程

Matlab教程

Matlab教程
Matlab教程

10-1 MATLAB简介

10-2 MATLAB 基础(2h)

10-2-1 数据类型及数据的输入

10-2-2 绘制曲线/绘图

10-2-3数据标准化/归一化

10-2-4 数据平滑

10-2-5 曲线拟合及插值

10-2-6 异常值的剔除

10-3 MATLAB统计工具箱(2h)

10-3-1 统计工具箱函数及应用

10-3-2方差分析

10-3-3回归分析

10-3-4主成分分析

10-3-5 聚类分析

10-3-6 判别分析——bayesian判别10-3-7正交设计实验

10-3-8设计实验

10-4小波分析工具箱(2h)

10-5神经网络工具箱(2h)

10-6 遗传算法工具箱(2h)

10-1 MATLAB简介(1)MATLAB 语言发展历程

MATLAB 语言的首创者Cleve Moler 教授在数值分析,特别是在数值线性代数的领域中很有影响,他参与编写了数值分析领域一些著名的著作和两个重要的Fortran 程序EISPACK 和LINPACK。他曾在密西根大学、斯坦福大学和新墨西哥大学任数学与计算机科学教授。1980 年前后,当时的新墨西哥大学计算机系主任Moler 教授在讲授线性代数课程时,发现了用其他高级语言编程极为不便,便构思并开发了MATLAB (MATrix LABoratory,即矩阵实验室),这一软件利用了当时数值线性代数领域最高水平的EISPACK 和LINPACK 两大软件包中可靠的子程序,用Fortran 语言编写了集命令翻译、科学计算于一身的一套交互式软件系统。

所谓交互式语言,是指人们给出一条命令,立即就可以得出该命令的结果。该语言无需像 C 和Fortran 语言那样,首先要求使用者去编写源程序,然后对之进行编译、连接,最终形成可执行文件。这无疑会给使用者带来了极大的方便。早期的MATLAB 是用Fortran 语言编写的,只能作矩阵运算;绘图也只能用极其原始的方法,即用星号描点的形式画图;内部函数也只提供了几十个。但即使其当时的功能十分简单,当它作为免费软件出现以来,还是吸引了大批的使用者。

1984年,Cleve Moler 和Jack Little 等人成立了一个名叫The MathWorks 的公司,Cleve Moler 一直任该公司的首席科学家。

Cleve Moler, Chief Scientist / Founder Jack Little, President

Cleve Moler is chairman and chief scientist at The MathWorks. Moler was a professor of math and computer science for almost 20 years at the University of Michigan, Stanford University and the University of New Mexico. He spent five years with two computer hardware manufacturers,

the Intel Hypercube organization and Ardent Computer, before joining The MathWorks full-time in 1989. In addition to being the author of the first version of MATLAB, Moler is one of the authors of the LINPACK and EISPACK scientific subroutine libraries. He is co-author of three textbooks on numerical methods

Jack Little is president and a co-founder of The MathWorks. He was a co-author and principal architect of early versions of the company's flagship MATLAB product as well as the Signal Processing Toolbox and the Control System Toolbox. Jack holds a B.S. degree in electrical engineering and computer science from MIT (1978) and an M.S.E.E. degree from Stanford University (1980). A Fellow of the IEEE and Trustee of the Massachusetts Technology Leadership Council, he writes and speaks about technical computing, Model-Based Design, entrepreneurship, and software industry issues.

Founders

Jack Little and Cleve Moler, the founders of The MathWorks, recognized the need among engineers and scientists for more powerful and productive computation environments beyond those provided by languages such as Fortran and C. In response to that need, they combined their expertise in mathematics, engineering, and computer science to develop MATLAB, a

high-performance technical computing environment. MATLAB combines comprehensive math and graphics functions with a powerful high-level language.

In addition to MATLAB, The MathWorks now develops and markets Simulink, a product for simulating nonlinear dynamic systems. The company also develops and markets an extensive set of add-on products for specialized application areas including control design, signal processing and communications, image processing, test and measurement, computational biology, and financial modeling and analysis.

●1984 年, The MathWorks公司推出了第一个MATLAB 的商业版本。当时的

MATLAB 版本已经用C 语言作了完全的改写,其后又增添了丰富多彩的图形图像处理、多媒体功能、符号运算和它与其他流行软件的接口功能,使得MATLAB 的功能越来越强大。

●1992 年 ,推出了具有划时代意义的MATLAB 4.0版本,并于1993 年推出了其微

机版, 可以配合Microsoft Windows 一起使用,使之应用范围越来越广。1994 年推出的 4.2 版本扩充了 4.0 版本的功能,尤其在图形界面设计方面更提供了新的方法。

●从1997 年春的5.0 版起,后历经5.1、5.2、5.3、6.0、6.1 等多个版本的不断改进,

MATLAB“面向对象”的特点愈加突出,数据类型愈加丰富,操作界面愈加友善。

(1997 年推出的MATLAB 5.0 版允许了更多的数据结构,如单元数据、数据结构体、多维矩阵、对象与类等,使其成为一种更方便编程的语言。1999 年初推出的MATLAB 5.3 版在很多方面又进一步改进了MATLAB 语言的功能。2000 年10月底推出了其全新的MATLAB 6.0 正式版(Release 12),在核心数值算法、界面设计、外部接口、应用桌面等诸多方面有了极大的改进。)

●2002 年初夏所推6.5 版的最大特点是:该版本采用了JIT 加速器,从而使

MATLAB 朝运算速度与C程序相比肩的方向前进了一大步。2003 年推出了其全新的MATLAB 6.5.1 正式版。

●2004年9月MATLAB 7.0(最新版本Release 14) 的Service Pack 1。

(2) MATLAB 的主要应用领域

MATLAB专门以矩阵的形式处理数据。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB 产品的开放式结构,可以非常容易地对MATLAB 的功能进行扩充。

目前MATLAB产品家族可以用来进行:

数值分析

数值和符号计算

工程与科学绘图

控制系统的设计与方针

数字图像处理

数字信号处理

通讯系统设计与仿真

财务与金融工程

MATLAB 是MATLAB 产品家族的基础,它提供了基本的数学算法,例如矩阵运算、数值分析算法,MATLAB 集成了2D 和3D 图形功能,以完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言—— M 语言,利用M 语言可以通过编写脚本或者函数文件实现用户自己的算法。

MATLAB Compiler 是一种编译工具,它能够将那些利用MATLAB 提供的编程语言—— M 语言编写的函数文件编译生成为函数库、可执行文件COM 组件等等。这样就可以扩展MATLAB 功能,使MATLAB 能够同其他高级编程语言例如

C/C++ 语言进行混合应用,取长补短,以提高程序的运行效率,丰富程序开发的手段。

利用M 语言还开发了相应的MATLAB 专业工具箱函数供用户直接使用。这些工具箱应用的算法是开放的可扩展的,用户不仅可以查看其中的算法,还可以针对一些算法进行修改,甚至允许开发自己的算法扩充工具箱的功能。目前MATLAB 产品的工具箱有四十多个,分别涵盖了数据获取、科学计算、控制系统设计与分析、数字信号处理、数字图像处理、金融财务分析以及生物遗传工程等专业领域。

Simulink 是基于MATLAB 的框

图设计环境,可以用来对各种动态系统

进行建模、分析和仿真,它的建模范围

广泛,可以针对任何能够用数学来描述

的系统进行建模,例如航空航天动力学

系统、卫星控制制导系统、通讯系统、

船舶及汽车等等,其中了包括连续、离

散,条件执行,事件驱动,单速率、多

速率和混杂系统等等。Simulink 提供了利用鼠标拖放的方法建立系统框图模型的图形界面,而且Simulink 还提供了丰富的功能块以及不同的专业模块集合,利用Simulink 几乎可以做到不书写一行代码完成整个动态系统的建模工作。

Stateflow 是一个交互式的设计工具,它基于有限状态机的理论,可以用来对复杂的事件驱动系统进行建模和仿真。Stateflow 与Simulink 和MATLAB 紧密集成,可以将Stateflow 创建的复杂控制逻辑有效地结合到Simulink 的模型中。

在MATLAB 产品族中,自动化的代码生成工具主要有Real-Time Workshop (RTW)和Stateflow Coder ,这两种代码生成工具可以直接将Simulink 的模型框图和Stateflow 的状态图转换成高效优化的程序代码。利用RTW 生成的代码简洁、可靠、易读。目前RTW 支持生成标准的 C 语言代码,并且具备了生成其他语言代码的能力。整个代码的生成、编译以及相应的目标下载过程都是自动完成的,用户需要做得仅仅使用鼠标点击几个按钮即可。MathWorks 公司针对不同的实时或非实时操

作系统平台,开发了相应的目标选项,配合不同的软硬件系统,可以完成快速控制原型(Rapid Control Prototype)开发、硬件在回路的实时仿真(Hardware-in-Loop)、产品代码生成等工作。

另外,MATLAB开放性的可扩充体系允许用户开发自定义的系统目标,利用Real-Time Workshop Embedded Coder 能够直接将Simulink 的模型转变成效率优化的产品级代码。代码不仅可以是浮点的,还可以是定点的。

MATLAB 开放的产品体系使MATLAB 成为了诸多领域的开发首选软件,并且,MATLAB 还具有300 余家第三方合作伙伴,分布在科学计算、机械动力、化工、计算机通讯、汽车、金融等领域。接口方式包括了联合建模、数据共享、开发流程衔接等等。MATLAB 结合第三方软硬件产品组成了在不同领域内的完整解决方案,实现了从算法开发到实时仿真再到代码生成与最终产品实现的完整过程。

主要的典型应用包括:

?控制系统的应用与开发——快速控制原型与硬件在回路仿真的统一平台dSPACE

?信号处理系统的设计与开发——全系统仿真与快速原型验证,TI DSP、Lyrtech 等信号处理产品软硬件平台

?通信系统设计与开发——结合RadioLab 3G 和Candence 等产品

?机电一体化设计与开发——全系统的联合仿真,结合Easy 5、Adams 等

虽然MATLAB 语言是计算数学专家倡导并开发的,但其普及和发展离不开自动控制领域学者的贡献。甚至可以说,MATLAB 语言是自动控制领域学者和工程技术人员捧红的,因为在MATLAB 语言的发展进程中,许多有代表性的成就和控制界的要求与贡献是分不开的。迄今为止,大多数工具箱也都是控制方面的。MATLAB 具有强大的数学运算能力、方便实用的绘图功能及语言的高度集成性,它在其他科学与工程领域的应用也是越来越广,并且有着更广阔的应用前景和无穷无尽的潜能。

子曰:―工欲善其事,必先利其器‖。如果有一种十分有效的工具能解决在教学与研究中遇到的问题,那么MATLAB语言正是这样的一种工具。它可以将使用者从繁琐、无谓的底层编程中解放出来,把有限的宝贵时间更多地花在解决问题中,这样无疑会提高工作效率。

目前,MATLAB 已经成为国际上最流行的科学与工程计算的软件工具,现在的MATLAB 已经不仅仅是一个―矩阵实验室‖了,它已经成为了一种具有广泛应用前景的全新的计算机高级编程语言了,有人称它为―第四代‖计算机语言,它在国内外高校和

研究部门正扮演着重要的角色。MATLAB 语言的功能也越来越强大,不断适应新的要求提出新的解决方法。可以预见,在科学运算、自动控制与科学绘图领域MATLAB 语言将长期保持其独一无二的地位。

MATLAB 语言是当今国际上科学界最具影响力、也是最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。MATLAB 语言在各国高校与研究单位起着重大的作用。

10-2 MATLAB 基础

10-2-1 数据类型及数据的输入

10-2-2 数据标准化/ 归一化

10-2-3 绘制曲线/ 绘图

10-2-4 数据平滑

10-2-5 曲线拟合及插值

最常用的交互界面:

命令窗口(Command Window ) 、当前目录浏览器(Current directory) ? 工作空间浏览器(Workspace)、历史指令窗(Command History)、M 文件编辑/ 调试器、内存数组编辑器、交互界面分类目录窗、帮助导航/ 浏览器。

10-2-1 数据类型及数据的输入

(1)数据类型

(2)数据的输入:

方法1:Word 表格中的数据可以直接拷入Matlab :

“B=[数据]”,得到相应的矩阵B[ … ];输入B‘,即得到转置矩阵B‘。

例如:

B=[1 3 5 7]

B=[1 3 5 7;12 17 19 20; 4 8 9 30]

方法2:ASCII text file transported into MATLAB:txt. →matlab data file. 指明路径:cd D:\qq(cd 与E之间有空格)

txt.数据读取:[m,n]=textread(?name‘)

例如:cd E:\qq

[m,n]=textread('sk2-1-5-1-ex.TXT');

若无分号,[m,n]=textread('gs1-3-13-2-ex.TXT') 则直接列出数据。

10-2-2 绘图/绘制曲线

(1)二维绘图

(2)三维绘图

(3)直方图: 二维bar(垂直方图), barh(水平方图), 三维bar3, bar3h

(1)二维绘图

plot(x,y) 绘出在向量x, 与向量y上相对应元素的点之图形; 如果x, y皆为矩阵, 则绘x的第一行对应y第一行的图, 然后逐对x, y重复。

title('???'):在图形上方, 显示标题。

xlabel('???'):在图形上, 标示x轴的名称。

ylabel('???'):在图形上, 标示y轴的名称。

grid:在图形上套上格子网。

axis(p):p为4个元素的列向量,分别标示出x轴与y轴的上下界。

hold :用于使多个图形重迭。

subplot(a,b,c):将窗口分割成a×b个子窗口(a行b列), 并将图形放置于第c个子窗口。注:

?在绘图时可用其它符号来当绘图点(如: + -. * : - ...等),其方法为在plot的参数内,加入一个以引号(' ')标注的符号,如plot(x, y, '+')。

?title, xlabel, ylabel, grid 皆须置于其所指定的plot函数之后。

?plot可被loglog取代,则绘出全对数图。

例如:plot(m,n);

xlabel('Ex/nm');ylabel('Fluorocence Intensity');title('sk2-1-5-1-ex.') ;

[m,n]=textread('sk1-1-5-sy.TXT');

plot(m,n);

xlabel('Ex/nm');ylabel('Fluorocence Intensity');title('sk1-1-5-sy.') ;

将几个图组合在一起:

subplot(a,b,c):将窗口分割成a×b个子窗口(a行b列), 并将图形放置于第c个子窗口。[m,n]=textread('sk2-1-5-1-ex.TXT');

subplot(1,2,1)

plot(m,n);

[m,n]=textread('sk1-1-5-sy.TXT');

[m,n]=textread('sk1-1-5-sy.TXT');

subplot(1,2,2)

plot(m,n);

xlabel('Ex/nm');ylabel('Fluorocence Intensity');title('sk1-1-5-sy.') ;

例如:绘制函数y = xe?x在0 ≤x ≤1时的曲线。

x=0:0.1:1

y=x.*exp(-x)

plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')

练习1. 写Matlab 程序:在相同的坐标轴上, x的范围为-2pi: .02: 2pi, 绘制函数y=cos(x)和y=cos(x3), 并使用函数xlabel, ylabel 与title 批注图形。

解:

x=-2*pi:.02:2*pi;

y=cos(x);

subplot(1,2,1); plot(x,y);

xlabel('x'); ylabel('y'); title('y=cos(x)')

subplot(1,2,2);

y=cos(x.^3); plot(x,y);

xlabel('x'); ylabel('y'); title('y=cos(x.^3)')

练习2. 绘制酸碱的对数图:

以0.1mol/L H3PO4(pK1=2.12,pK2=7.20,pK3=12.36)为例,绘制酸的对数图。

解:

pH=(0:1:14);y=-pH;

plot(pH,y); %绘制pH曲线

axis([0 14 -8 0]);

axis(axis);

hold on

xlabel('pH'); ylabel('logC'); title('logC-pH图');

gtext('[H+]')

y=pH-14; %绘制pOH曲线

plot(pH,y); gtext('[OH-]')

k1=10^-2.12;k2=10^-7.20;k3=10^-12.36;c=0.1;

%求各组分的分布浓度

for i=1:15

a=10^(-pH(i)*3)+k1*10^(-pH(i)*2)+k1*k2*10^(-pH(i))+k1*k2*k3;

y1(i)=log10(c*10^(-pH(i)*3)/a);

y2(i)=log10(c*k1*10^(-pH(i)*2)/a);

y3(i)=log10(c*k1*k2*10^(-pH(i))/a);

y4(i)=log10(c*k1*k2*k3/a);

end

plot(pH,y1,'r',pH,y2,'m',pH,y3,'b',pH,y4,'g')

gtext('[H3PO4]'); gtext('[H2PO4]'); gtext('[HPO4]'); gtext('[PO4]')

注:使用gtext('??? ')时,需在图上点击,才出现添加的名称。

练习3. 绘制滴定曲线:以0.1000mol/L NaOH滴定20mL 0.1000mol/LHCl 为例,绘制此滴定过程的滴定曲线。

解:

vb=(0:0.002:19.998);ca=0.1;va=20.00;cb=0.1;

%滴定终点前溶液pH值计算

for i=1:length(vb)

pH(i)=-log10(ca*(va-vb(i))/(va+vb(i)));

end

plot(vb,pH);a=pH(length(vb));

axis([0 40 0 14]);axis(axis)

hold on

vb=(20.002:0.002:40.00);

%滴定终点后溶液pH值计算

for i=1:length(vb)

pOH=-log10(cb*(vb(i)-va)/(va+vb(i)));

pH(i)=14-pOH;

end

b=pH(1);

plot(vb,pH);xlabel('Vml(碱)');ylabel('pH');title('强碱滴定强酸的滴定曲线') v=[19.998 20.002];

v1=[a b];

plot(v,v1)

练习4. 绘制原子轨道:

解:theta=linspace(0,2*pi);phi=linspace(0,2*pi);

r=(3*(cos(theta)).*cos(theta)-1).*sqrt(5/(16*pi));

%因函数中不含phi角,所以在xz平面

x=r.*sin(theta);z=r.*cos(theta);

subplot(1,3,1)

plot(x,z)

axis([-0.2 0.2 -0.6 0.6]) %调整坐标值

axis(axis);

hold on

x1=(-0.2:0.1:0.2);z1=zeros(size(x1));

plot(x1,z1) %画横坐标

z1=(-0.5:0.1:0.5);x1=zeros(size(z1));

plot(x1,z1) %画纵坐标

gtext('x');gtext('z');gtext('+');gtext('+');gtext('-');gtext('-')

subplot(1,3,2)

r=cos(theta).*sin(theta).*sqrt(5/(4*pi));%abs(cos(phi))=1

%当abs(cos(phi))=1时,即在xz平面上

x=r.*sin(theta);z=r.*cos(theta);

plot(x,z)

axis([-0.3 0.3 -0.6 0.6])

axis(axis)

hold on

x1=(-0.3:0.1:0.3);z1=zeros(size(x1));

plot(x1,y1)

z1=(-0.3:0.1:0.3);x1=zeros(size(z1));

plot(x1,z1)

gtext('x');gtext('z');gtext('+');gtext('+');gtext('-');gtext('-') subplot(1,3,3)

r=cos(theta).*sin(theta).*sqrt(15/(4*pi)); % sin(phi)=1

%当abs(sin(phi))=1时,即在yz平面

y=r.*sin(theta);z=r.*cos(theta);

plot(y,z)

axis([-0.5 0.5 -0.8 0.8])

axis(axis)

hold on

y1=(-0.5:0.1:0.5);z1=zeros(size(y1));

plot(y1,z1)

z1=(-0.5:0.1:0.5);y1=zeros(size(z1));

plot(y1,z1)

gtext('y');gtext('z');gtext('+');gtext('+');gtext('-');gtext('-')

练习:

t=0:pi/50:4*pi;%

y0=exp(-t/3);

y=exp(-t/3).*sin(3*t);

plot(t,y,'-r',t,y0,':b',t,-y0,':b')% 用不同颜色、线型绘制曲线

%

t=0:pi/50:4*pi;%

y0=exp(-t/3);

y=exp(-t/3).*sin(3*t);

plot(t,y,'-r',t,y0,':b')

(2)三维绘图

对于函数z =f(x,y),Matlab提供了一套立体绘图功能, 其中包括:

meshgrid 用来产生完整的x-y平面上的点集, 以供立体绘图函数所需。

mesh, surf, surfl, surfc,用来绘出立体图形(仅仅是显示的不同,surf,surfl绘出

的立体图形显示几乎一样;surfc 在矩形区域内显示三维带阴影曲面图,且在曲面下面画出等高线)。

contour3 用来绘制显示出曲面的立体轮廓线(曲面的等高线图)。

view(a,b) 以不同的位置来观看曲面;特别需注意的是,在view(a,b)中,a代表方位

角(horizontal rotation),b代表仰角(vertical elevation);Matlab内定值为a=

-37.5。,b=30。。

例如:画z=0.5x2-0.5y2, -5≤ x ≤ 5, -5≤ y ≤ 5, -15≤ z ≤ 15

clf ;%清除先前的图

[x,y]=meshgrid(-5:.2:5,-5:.2:5);%产生x-y平面上的点集

z=0.5*x.^2-0.5*y.^2;

surfl(x,y,z); %绘制曲面z=f(x,y)附有亮光

view(30,30); %改变观测的角度

axis([-5 5 -5 5 -15 15]) %限定x,y,z轴的范围

xlabel('x-axis');ylabel('y-axis');zlabel('z-axis');

clf ;%清除先前的图

[x,y]=meshgrid(-5:.2:5,-5:.2:5);%产生x-y平面上的点集

z=0.5*x.^2-0.5*y.^2;

surf (x,y,z);

view(30,30); %改变观测的角度

axis([-5 5 -5 5 -15 15]) %限定x,y,z轴的范围

xlabel('x-axis');ylabel('y-axis');zlabel('z-axis');

clf ;%清除先前的图

[x,y]=meshgrid(-5:.2:5,-5:.2:5);%产生x-y平面上的点集

z=0.5*x.^2-0.5*y.^2;

contour3 (x,y,z);

view(30,30); %改变观测的角度

axis([-5 5 -5 5 -15 15]) %限定x,y,z轴的范围

xlabel('x-axis');ylabel('y-axis');zlabel('z-axis');

练习:画出所表示的三维曲面。x,y的取值范围是[-8,8] clear;x=-8:0.5:8;

y=x';

X=ones(size(y))*x;

Y=y*ones(size(x));

R=sqrt(X.^2+Y.^2)+eps;

Z=sin(R)./R;

surf(X,Y,Z);

colormap(cool)

xlabel('x'),ylabel('y'),zlabel('z')

(3)直方图bar(垂直方图), barh(水平方图), bar3, bar3h

colormap(cool) colormap(hot)

colormap(winter) colormap(summer) % 图的颜色

x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5]; %A、B、C三个因素的5组数据

subplot(1,2,1),bar(x',Y','stacked') % bar垂直方图,stacked累计式xlabel('x'),ylabel('\Sigma y'),colormap(cool)

legend('因素A','因素B','因素C')

subplot(1,2,2),barh(x',Y','grouped') % barh水平方图,grouped分组式xlabel('y'),ylabel('x')

x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

plot(x,Y), barh(x',Y','grouped')

xlabel('x'),ylabel('y'),colormap(cool)

legend('因素A','因素B','因素C')

x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

plot(x,Y), barh(x',Y','grouped')

xlabel('Y'),ylabel('x'),colormap(cool)

legend('因素A','因素B','因素C')

x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

plot(x,Y), bar(x',Y','grouped')

xlabel('x'),ylabel('y'), colormap(cool) colormap(hot) legend('因素A','因素B','因素C')

用三维直方图表现上例数据:

clf ;x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

subplot(1,2,1),bar3(x',Y','stacked')

xlabel(' ABC'),ylabel('x'),zlabel('y')

colormap(cool)

subplot(1,2,2),bar3h(x',Y','grouped')

ylabel('y'),zlabel('x');

clf ;x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

subplot(1,2,1),bar3(x',Y','stacked')

xlabel(' ABC'),ylabel('x'),zlabel('y')

colormap(winter)

subplot(1,2,2),bar3h(x',Y','grouped')

ylabel('y'),zlabel('x');

clf ;x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

subplot(1,2,1),bar3(x',Y',1)

xlabel(' ABC'),ylabel('x'),zlabel('y')

colormap(summer)

subplot(1,2,2),bar3h(x',Y','grouped')

ylabel('y'),zlabel('x');

clf ;x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

subplot(1,2,1),bar3(x',Y',1)

xlabel(' ABC'),ylabel('x'),zlabel('y')

colormap(spring)

subplot(1,2,2),bar3h(x',Y','grouped')

ylabel('y'),zlabel('x');

clf ;x=-2:2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

subplot(1,2,1),bar3(x',Y',1)

xlabel(' ABC'),ylabel('x'),zlabel('y')

colormap(autumn)

subplot(1,2,2),bar3h(x',Y','grouped')

ylabel('y'),zlabel('x');

10-2-3 数据标准化/ 归一化standard

直接调用内置函数zscore。X=zscore(B)

For a column vector V, z score is Z = (V-mean(V))./std(V) X=zscore(B)

MATLAB经典数学建模教程

第 1 节Matlab 基本知识 一、Matlab 的主要功能 Matlab是一种功能非常强大的工程语言,诞生于20世纪70年代,1984年正式推向市场。2002年8月,Matlab6.5开始发布。是进行科学研究和产品开发必不可少的工具。 ●数值和符号计算 矩阵(数组)的四则运算(Matrix+Laboratory)、数值差分、导数、积分、求解微分方程、微分方程的优化等 ●数字图像、数字信号处理 ●工程和科学绘图 ●控制系统设计 ●财务工程 ●建模、仿真功能 二、Matlab 的界面 1.命令窗口(Command Window): Matlab各种操作命令都是由命令窗口开始,用户可以在命令窗口中输入Matlab命令,实现其相应的功能。此命令窗口主要包括文本的编辑区域和菜单栏(如:四则运算;“;”禁止显示变量的值;↑↓遍历以前的命令)。在命令窗口空白区域单击鼠标右键,打开快捷菜单,各项命令功能如下: Evaluate Selection :打开所选文本对应的表达式的值。 Open Selection :打开文本所对应的MatLab文件。 Cut :剪切编辑命令。 Paste :粘贴编辑命令。 2. M-文件编辑/调试(Editor/Debugger)窗口 Matlab Editor/Debugger窗口是一个集编辑与调试两种功能于一体的工具环境。 M-文件(函数文件) ●什么是M-文件:它是一种和Dos环境中的批处理文件相似的脚本文件,对于简单问题, 直接输入命令即可,但对于复杂的问题和需要反复使用的则需做成M-文件(Script File)。 ●创建M-文件的方法: Matlab命令窗的File/New/M-file。 在Matlab命令窗口运行edit。 ●M-文件的扩展名:*.m ●执行M-文件:F5 ●M文件的调试 选择Debug菜单,其各项命令功能如下: Step :逐步执行程序。 Step in :进入子程序中逐步执行调试程序。

一个简单的Matlab_GUI编程实例

Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框,6个静态文本框,和一个按钮,布置如下

图所示; 布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码; 点击上图所示红色方框,选择edit1_Callback,光标便立刻移到下面这段代码的位置。 1. 2. 3.function edit1_Callback(hObject, eventdata, handles) 4.% hObject handle to edit1 (see GCBO) 5.% eventdata reserved - to be defined in a future version of MATLAB

6.% handles structure with handles and user data (see GUIDATA) 7.% Hints: get(hObject,'String') returns contents of edit1 as text 8.% str2double(get(hObject,'String')) returns contents of edit1 as a double 复制代码 然后在上面这段代码的下面插入如下代码: 1. 2.%以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字,则现实空白内容input = str2num(get(hObject,'String')); %检查输入是否为空. 如果为空,则默认显示为0if (isempty(input)) set(hObject,'String','0')endguidata(hObject, handles); 复制代码 这段代码使得输入被严格限制,我们不能试图输入一个非数字。 4.为edit2_Callback添加同样一段代码 5 现在我们为计算按钮添加代码来实现把数据1和数据2相加的目的。 用3中同样的方法在m文件中找到pushbutton1_Callback代码段 如下; 1.function pushbutton1_Callback(hObject, eventdata, handles) 2.% hObject handle to pushbutton1 (see GCBO) 3.% eventdata reserved - to be defined in a future version of MATLAB 4.% handles structure with handles and user data (see GUIDATA) 复制代码

(整理)matlab实例教程-比较实用.

实验一特殊函数与图形 一、问题背景与实验目的 二、相关函数(命令)及简介 三、实验内容 四、自己动手 一、问题背景与实验目的 著名的Riemann函数大家都很熟悉了,但是关于它的图像你是否清楚呢除了最上面那几点,其他都很难画吧你想不想看看下面那些“挤在一起”的点是怎样分布的呢还有几何中的马鞍面、单叶双曲面等是怎样由直线生成的,是不是也想目睹一下呢这些,都离不开绘图. 实际上绘图一直是数学中的一种重要手段,借助图形,往往可以化繁为简,使抽象的对象得到明白直观的体现.比如函数的基本性质,一个图形常可以使之一目了然,非常有效.它虽不能代替严格的分析与证明,但在问题的研究过程中,可以帮助研究人员节约相当一部分精力.此外,它还可以使计算、证明、建模等的结果得到更明白易懂的表现,有时,这比科学论证更有说服力.同时,数学的教学与学习过程也离不开绘图.借助直观的图形,常可以使初学者更容易接受新知识.如数学分析中有不少函数,其解析式着实让人望而生畏,即使对其性质作了详尽的分析,还是感到难明就里;但如果能看到它的图形,再配合理论分析,则问题可以迎刃而解.又如在几何的学习中,会遇到大量的曲线与曲面,也离不开图形的配合. 传统的手工作图,往往费力耗时,效果也不尽理想.计算机恰恰弥补了这个不足,使你可以方便地指定各种视角、比例、明暗,从各个角度进行观察.本实验通过对函数的图形表示和几个曲面(线)图形的介绍,一方面展示它们的特点,另一方面,也将就Matlab软件的作图功能作一个简单介绍.大家将会看到,Matlab 的作图功能非常强大. 二、相关函数(命令)及简介 1.平面作图函数:plot,其基本调用形式: plot(x,y,s) 以x作为横坐标,y作为纵坐标.s是图形显示属性的设置选项.例如:x=-pi:pi/10:pi; y=sin(x); plot(x,y,'--rh','linewidth',2,'markeredgecolor','b','markerfac ecolor','g')

MATLAB 实用教程 课后习题答案

第二章 1.计算复数3+4i与5-6i的乘积。 a=3+4i b=5-6i c=a*b 2.构建结构体Students,属性包含Name、age和Email,数据包括{’Zhang’,18,*‘Zhang@16 https://www.doczj.com/doc/7c2137041.html,’,’Zhang@https://www.doczj.com/doc/7c2137041.html,’+}、{’Wang’,21,[]}和{’Li’,[],[]},构建后读取所有Name属性值,并且修改’Zhang’的Age属性值为19。 Students(1).Age=18 Students(1).Email='zhang@https://www.doczj.com/doc/7c2137041.html,','zhang@https://www.doczj.com/doc/7c2137041.html,' Students(2).Name='Wang' Students(2).Age=21 Students(2).Email=[] Students(3).Name='Li' Students(3).Age=[] Students(3).Email=[] https://www.doczj.com/doc/7c2137041.html, Student(1).Age(1)=19 Student.Age 3.用满矩阵和稀疏矩阵存储方式分别构造下属矩阵: A=[0 1 0 0 0;1 0 0 0 0;0 0 0 0 0;0 0 0 1 0] A=[0 1 0 0 0;1 0 0 0 0;0 0 0 0 0;0 0 0 1 0] S=sparse(A) S=sparse([2,1,4],[1,2,4],[1,1,1],4,5) 4.采用向量构造符得到向量[1,5,9....,41]. A=1:4:41 5.按水平和竖直方向分别合并下述两个矩阵:A=[1 0 0;1 1 0;0 0 1],B=[2 3 4;5 6 7;8 9 10] A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B] 6.分别删除第五题两个结果的第2行。 A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B] C(2,:)=[] D(2,:)=[] 7.分别将第5题两个结果的第2行最后3列的数值改为[11 12 13]。 A=[1 0 0;1 1 0;0 0 1] B=[2 3 4;5 6 7;8 9 10] C=[A B] D=[A;B]

matlab2007教程

第 1 章基础准备及入门本章有三个目的:一是讲述MATLAB正常运行所必须具备的基础条件;二是简明地介 绍MATLAB及其操作桌面Desktop的基本使用方法;三是全面介绍MATLAB的帮助系统。 本章的前两节讲述:MATLAB的正确安装方法和MATLAB 环境的启动。因为指令窗是MATLAB最重要的操作界面,所以本章用第 1.3、1.4 两节以最简单通俗的叙述、算例讲述指令窗的基本操作方法和规则。这部分内容几乎对MATLAB各种版本都适用。第1.5到第1.8节专门介绍MATLAB最常用的另五个交互界面:历史指令窗、当前目录浏览器、工作空间浏览器、数组编辑器、M文件编辑器。鉴于实际应用中,帮助信息和求助技能的重要性。本章专设第1.9节专门叙述MATLAB的帮助体系和求助方法。 作者建议:不管读者此前是否使用过MATLAB,都不要忽略本章。 1.1 MATLAB的安装和工具包选择 MATLAB只有在适当的外部环境中才能正常运行。因此,恰当地配置外部系统是保证MATLAB运行良好的先决条件。MATLAB本身可适应于许多机种和系统,如 PC机和 Unix 工作站等。但本节只针对我国使用最广的PC机系统给予介绍。 对PC机用户来说,常常需要自己安装MATLAB。MATLAB R2007a(即旧编号MATLAB7.4)版要求Win2000或WinXP平台。下面介绍从光盘上安装MATLAB的方法。一般说来,当MATLAB光盘插入光驱后,会自启动“安装向导”。假如自启动没有实现,那么可以在<我的电脑>或<资源管理器>中双击setup.exe应用程序,使“安装向导”启动。安装过程中出现的所有界面都是标准的,用户只要按照屏幕提示操作,如输入用户名、单位名、口令等就行。 在安装MATLAB.R2007a时,会出现一个界面,该界面上有两个选项:Typical和Custom。假如你不熟悉MATLAB,或假如你机器的硬盘的自由空间远大于3G,或假如你需要用到光盘上MATLAB的所有功能及工具包,那么你就点选“Typical”。否则,点选“Custom”。 在点选“Custom”后,会引出如图1.1-1的界面。你可以根据需要,在“Select products to install”栏中勾选相应的组件。注意:MATLAB软件光盘总包含很多工具包,它们有的是通用的,有的则专业性很强。对一般用户来说,完全不必采取全部安装,而应根据需要有所选择。否则将占据很多硬盘空间。表1.1-1对各组件的描述供用户选择时参考。

Matlab基础教程

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2);

若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开

matlab入门教程文献

MATLAB入门教程 1.MATLAB的基本知识 1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示:">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。小提示:MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2); 若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MA TLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数

matlab教程详解 (5)

第五章符号计算 符号计算的特点:一,运算以推理解析的方式进行,因此不受计算误差积累问题困扰;二,符号计算,或给出完全正确的封闭解,或给出任意精度的数值解(当封闭解不存在时);三,符号计算指令的调用比较简单,经典教科书公式相近;四,计算所需时间较长,有时难以忍受。 在MATLAB中,符号计算虽以数值计算的补充身份出现,但涉及符号计算的指令使用、运算符操作、计算结果可视化、程序编制以及在线帮助系统都是十分完整、便捷的。 MATLAB的升级和符号计算内核Maple的升级,决定着符号计算工具包的升级。但从用户使用角度看,这些升级所引起的变化相当细微。即使这样,本章还是及时作了相应的更新和说明。如MATLAB 6.5+ 版开始启用Maple VIII的计算引擎,从而克服了Maple V计算“广义Fourier变换”时的错误(详见第5.4.1节)。 5.1符号对象和符号表达式 5.1.1符号对象的生成和使用 【例5.1.1-1】符号常数形成中的差异 a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)] % <1> a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)]) % <2> a3=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)],'e') % <3> a4=sym('[1/3,pi/7,sqrt(5),pi+sqrt(5)]') % <4> a24=a2-a4 a1 = 0.3333 0.4488 2.2361 5.3777 a2 = [ 1/3, pi/7, sqrt(5), 6054707603575008*2^(-50)] a3 = [ 1/3-eps/12, pi/7-13*eps/165, sqrt(5)+137*eps/280, 6054707603575008*2^(-50)] a4 = [ 1/3, pi/7, sqrt(5), pi+sqrt(5)] a24 = [ 0, 0, 0, 189209612611719/35184372088832-pi-5^(1/2)] 【例5.1.1-2】演示:几种输入下产生矩阵的异同。 a1=sym([1/3,0.2+sqrt(2),pi]) % <1> a2=sym('[1/3,0.2+sqrt(2),pi]') % <2> a3=sym('[1/3 0.2+sqrt(2) pi]') % <3> a1_a2=a1-a2 % a1 = [ 1/3, 7269771597999872*2^(-52), pi] a2 = [ 1/3, 0.2+sqrt(2), pi] a3 = [ 1/3, 0.2+sqrt(2), pi] a1_a2 =

MATLAB课程设计报告(绝对完整)

课程设计任务书 学生姓名:董航专业班级:电信1006班 指导教师:阙大顺,李景松工作单位:信息工程学院 课程设计名称:Matlab应用课程设计 课程设计题目:Matlab运算与应用设计5 初始条件: 1.Matlab6.5以上版本软件; 2.课程设计辅导资料:“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应 用”、线性代数及相关书籍等; 3.先修课程:高等数学、线性代数、电路、Matlab应用实践及信号处理类相关课程等。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.课程设计内容:根据指导老师给定的7套题目,按规定选择其中1套完成; 2.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析, 针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结。具体设计要求包括: ①初步了解Matlab、熟悉Matlab界面、进行简单操作; ②MA TLAB的数值计算:创建矩阵矩阵运算、多项式运算、线性方程组、数值统计; ③基本绘图函数:plot, plot3, mesh, surf等,要求掌握以上绘图函数的用法、简单图形 标注、简单颜色设定等; ④使用文本编辑器编辑m文件,函数调用; ⑤能进行简单的信号处理Matlab编程; ⑥按要求参加课程设计实验演示和答辩等。 3.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括: ①目录; ②与设计题目相关的理论分析、归纳和总结; ③与设计内容相关的原理分析、建模、推导、可行性分析; ④程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结; ⑤课程设计的心得体会(至少500字); ⑥参考文献(不少于5篇); ⑦其它必要内容等。 时间安排:1.5周(分散进行) 参考文献: [1](美)穆尔,高会生,刘童娜,李聪聪.MA TLAB实用教程(第二版) . 电子工业出版社,2010. [2]王正林,刘明.精通MA TLAB(升级版) .电子工业出版社,2011. [3]陈杰. MA TLAB宝典(第3版) . 电子工业出版社,2011. [4]刘保柱,苏彦华,张宏林. MA TLAB 7.0从入门到精通(修订版) . 人民邮电出版社,2010. 指导教师签名:年月日 系主任(或责任教师)签名:年月日

MATLAB基础及应用教程

第4章程序设计 在前面我们已经看到,MATLAB不但可以在命令窗直接输入命令并运行,而且还可以生成自己的程序文件,这就是我们通常说的一类以M为后缀的M文件,本章我们就来研究这类文件的形成方法。 M文件可分分为两大类,一是命令式M文件(也称为脚本文件,script),二是函数式M 文件(function)。两类文件的区别在于: (1)命令式文件可以直接运行,函数式文件不能直接运行,只能调用。 (2)命令式文件运行时没有输入输出参量,函数式文件在调用时需要进行输入输出参量设置。 (3)命令式文件运行中可以调用工作空间的数据,运行中产生的所有变量为全局变量。 (4)函数式文件不能调用工作空间的数据,运行中产生的所有变量为局部变量。命令式文件运行中产生的所有变量为全局变量,可以调用和存储到工作空间的数据。 4.1 MATLAB的程序文件-M文件 4.1.1 脚本文件(Scripts) 当我们需要在命令窗进行大量的命令集合运行时,直接从命令窗口输入比较麻烦,这时就可以将这些命令集合存放在一个脚本文件(Scripts)中,运行时只需要输入其文件名就可以自动执行这些命令集合。需要注意的是,脚本文件运行所产生的变量都驻留在MATLAB 的工作空间中,同时脚本文件也可以调用工作空间中的数据。因此,脚本文件所涉及的变量是全局变量。前几章所涉及到的M文件都是这类脚本文件。 编辑一个脚本文件可以直接在命令窗口的左上角打开编辑窗进行编辑。 4.1.2 函数文件(function) 函数式文件(function)的构成 (1)函数定义行: Function [输出参量]=gauss(输入参量) (2): 完成函数的功能。 (3)函数说明。 (4)函数行注。 从上面构成的情况看,函数式文件实际上是完成输入参量与输出参量的转换,这样的转换是由函数文件名为gauss的文件来完成的。函数体的功能必须说明清楚输入参量与输出参量的关系。函数说明是用来解释该函数的功能的,函数行注是对程序行进行说明的。上面(1)和(2)是必须的。 【例4-1】分析下面函数文件。 %一个数列,任意项等于前两项之和,输入项数可以给出这个数列

北航 MATLAB教程答案(张志涌)

1 数字1.5e2,1.5e3 中的哪个与1500相同吗? 1.5e3 2 请指出如下5个变量名中,哪些是合法的? abcd-2 xyz_ 3 3chan a 变量 ABCDefgh 2、5是合法的。 3 在MATLAB 环境中,比1大的最小数是多少? 1+eps 4 设 a = -8 , 运行以下三条指令,问运行结果相同吗?为什么? w1=a^(2/3) w2=(a^2)^(1/3) w3=(a^(1/3))^2 w1 = -2.0000 + 3.4641i ;w2 = 4.0000 ;w3 =-2.0000 + 3.4641i 5 指令clear, clf, clc 各有什么用处? clear 清除工作空间中所有的变量。 clf 清除当前图形。clc 清除命令窗口中所有显示。 第二章 1 说出以下四条指令产生的结果各属于哪种数据类型,是“双精度”对象,还是“符号”符号对象? 3/7+0.1双; sym(3/7+0.1)符; sym('3/7+0.1') 符;; vpa(sym(3/7+0.1)) 符; 2 在不加专门指定的情况下,以下符号表达式中的哪一个变量被认为是自由符号变量. sym('sin(w*t)'),sym('a*exp(-X)'),sym('z*exp(j*th)') symvar(sym('sin(w*t)'),1) w a z 3 (1)试写出求三阶方程05.443 =-x 正实根的程序。注意:只要正实根,不要出现其他根。 (2)试求二阶方程022=+-a ax x 在0>a 时的根。 (1)reset(symengine) syms x positive solve(x^3-44.5) ans = (2^(2/3)*89^(1/3))/2 (2)求五阶方程02 2 =+-a ax x 的实根 syms a positive %注意:关于x 的假设没有去除 solve(x^2-a*x+a^2) Warning: Explicit solution could not be found. > In solve at 83 ans = [ empty sym ] syms x clear syms a positive solve(x^2-a*x+a^2) ans = a/2 + (3^(1/2)*a*i)/2 a/2 - (3^(1/2)*a*i)/2 4 观察一个数(在此用@记述)在以下四条不同指令作用下的异同。 a =@, b = sym( @ ), c = sym( @ ,' d ' ), d = sym( '@ ' ) 在此,@ 分别代表具体数值 7/3 , pi/3 , pi*3^(1/3) ;而异同通过vpa(abs(a-d)) , vpa(abs(b-d)) , vpa(abs(c-d))等来观察。 ● 理解准确符号数值的创建法。 ● 高精度误差的观察。 (1)x=7/3 x=7/3;a=x,b=sym(x),c=sym(x,'d'),d=sym('7/3'),

(Matlab)SVM工具箱快速入手简易教程

SVM工具箱快速入手简易教程(by faruto) 一. matlab 自带的函数(matlab帮助文件里的例 子)[只有较新版本的matlab中有这两个SVM的函数] ===== svmtrain svmclassify =====简要语法规则==== svmtrain Train support vector machine classifier Syntax SVMStruct = svmtrain(Training, Group) SVMStruct = svmtrain(..., 'Kernel_Function', Kernel_FunctionValue, ...) SVMStruct = svmtrain(..., 'RBF_Sigma', RBFSigmaValue, ...) SVMStruct = svmtrain(..., 'Polyorder', PolyorderValue, ...) SVMStruct = svmtrain(..., 'Mlp_Params', Mlp_ParamsValue, ...) SVMStruct = svmtrain(..., 'Method', MethodValue, ...) SVMStruct = svmtrain(..., 'QuadProg_Opts', QuadProg_OptsValue, ...) SVMStruct = svmtrain(..., 'SMO_Opts', SMO_OptsValue, ...) SVMStruct = svmtrain(..., 'BoxConstraint', BoxConstraintValue, ...) SVMStruct = svmtrain(..., 'Autoscale', AutoscaleValue, ...) SVMStruct = svmtrain(..., 'Showplot', ShowplotValue, ...) --------------------- svmclassify Classify data using support vector machine Syntax Group = svmclassify(SVMStruct, Sample) Group = svmclassify(SVMStruct, Sample, 'Showplot', ShowplotValue) ============================实例研究==================== load fisheriris %载入matlab自带的数据[有关数据的信息可以自己到UCI查找,这是UCI的经典数据之一],得到的数据如下图:

Matlab2012教程--经典教程

第1章基础准备及入门 1.1 最简单的计算器使用法 为易于学习,本节以算例方式叙述,并通过算例归纳一些MATLAB最基本的规则和语 法结构。建议读者,在深入学习之前,先读一读本节。 2 【例1.3-1】求[122(74)]3的算术运算结果。本例演示:最初步的指令输入形式 和必需的操作步骤。 (1)用键盘在MA TLAB指令窗中输入以下内容 >> (12+2*(7-4))/3^2 (2)在上述表达式输入完成后,按[Enter] 键,该指令被执行,并显示如下结果。 ans = 2 〖说明〗 本例在指令窗中实际运行的情况参见图 1.3-1。 指令行“头首”的“>>”是“指令输入提示符”,它是自动生成的。本书在此后的输入指令前将不再带提示符“>>”。理由是:(A)为使本书简洁;(B)本书用MATLAB 的M-book写成,而在M-book中运行的指令前是没有提示符的。 5

MATLAB的运算符(如+、- 等)都是各种计算程序中常见的习惯符号。 一条指令输入结束后,必须按[Enter] 键,那指令才被执行。 由于本例输入指令是“不含赋值号的表达式”,所以计算结果被赋给MATLAB的一个默认变量“ans”。它是英文“answer”的缩写。 【例1.3-2】“续行输入”法。本例演示:或由于指令太长,或出于某种需要,输入指令行必 须多行书写时,该如何处理。 S=1-1/2+1/3-1/4+ ... 1/5-1/6+1/7-1/8 S = 0.6345 〖说明〗 MA TLAB用3个或3个以上的连续黑点表示“续行”,即表示下一行是上一行的继续。 本例指令中包含“赋值号”,因此表达式的计算结果被赋给了变量S。 指令执行后,变量S被保存在MA TLAB 的工作空间(Workspace)中,以备后用。如果用户不用clear 指令清除它,或对它重新赋值,那么该变量会一直保存在工作空间中, 直到本MATLAB 指令窗被关闭为止。 1.3.3数值、变量和表达式 前节算例只是表演了“计算器”功能,那仅是MA TLAB全部功能中小小一角。为深入 学习MA TLAB,有必要系统介绍一些基本规定。本节先介绍关于变量的若干规定。 一数值的记述 MATLAB的数值采用习惯的十进制表示,可以带小数点或负号。以下记述都合法。 3 -99 0.001 9.456 1.3e-3 4.5e33 在采用IEEE浮点算法的计算机上,数值通常采用“占用64位内存的双精度”表示。 其相对精度是eps (MATLAB的一个预定义变量),大约保持有效数字16位。数值范围大308308 致从10到10。 二变量命名规则 变量名、函数名是对字母大小写敏感的。如变量myvar和MyVar表示两个不同的变量。 sin是MATLAB定义的正弦函数名,但SIN,Sin等都不是。 变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字和下连符)。 如myvar201是合法的变量名。 变量名中不得包含空格、标点、运算符,但可以包含下连符。如变量名my_var_201是合法的,且读起来更方便。而my,var201由于逗号的分隔,表示的就不是一个变量名。 6

matlab实用教程

MATLAB简介 https://www.doczj.com/doc/7c2137041.html,/ 1.MATLAB的概况 MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多. 当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类. 开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包. 2.MATLAB产生的历史背景 在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平. 到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序.Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传. 1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能. 1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发. 在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功

Matlab绘图教程(大量实例PPT)

MATLAB绘图

二维数据曲线图 p plot函数的基本调用格式为: x,y) ) plot( plot(x,y 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。 数据 例1 在0≤x2π区间内,绘制曲线y=2e-0.5x cos(4πx) 1≤区间内绘制曲线205x(4) 程序如下: x=0:pi/100:2*pi; cos(4*pi*x); 0.5*x).*cos (4*pi*x); y=2*exp(--0.5*x).* y=2*exp( x,y)) plot(x,y plot(x y plot( x y)

例2 绘制曲线。 绘制曲线 程序如下: t=0:0.1:2*pi; x=t.sin(3t); x=t*sin(3*t); y=t.*sin(t).*sin(t); plot( x,y);); plot(x,y

数最简单的调用格式是包含个输参数plot函数最简单的调用格式是只包含一个输入参数:p() plot(x) 在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出条连续曲线,标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。

绘制多根二维曲线 1.plot函数的输入参数是矩阵形式时 数的输参数是矩阵形式时 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、 纵坐标分别绘制曲线,曲线条数等于矩阵的列数。纵坐标分别绘制曲线曲线条数等于矩阵的列数

(完整word版)matlab_gui初学者教程

什么是GUI呢? GUI是Graphical User Interface 图形用户界面的意思。象很多高级编程语言一样。Matlab也有图形用户界面开发环境。随着计算机技术的飞速发展。人与计算机的通信方式也发生的很大的变化。从原来的命令行通讯方式(例如很早的DOS系统)变化到了现在的图形界面下的交互方式。而现在绝大多数的应用程序都是在图形化用户界面下运行的。 记得读书的时候。大学开学不久。学校很多同学就开始报考全国计算机等级考试了。当然我也是其中的一分子。其中C语言是大多数人选择的科目。当时在学C语言的时候。经常也会遇到人机交互的例子。譬如一个计算两个数相加的程序。运行程序后便切换到了Dos模式。然后在此模式下输入两个数。再回车。才能返回运算结果。当时就觉得很不方便。也不友好。后来才得知C语言是面向过程的语言。是非面向对象的语言(VC++,VB,Matlab等是面向对象的)。那么下面我们就来看看Matlab是如何简单、快速而友好地解决这类问题的吧。 Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:File/New/GUI 如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框。6个静态文本框。和一个按钮。布置如下图所示;

布置好各控件以后。我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码; 点击上图所示红色方框。选择edit1_Callback。光标便立刻移到下面这段代码的位置。function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double 然后在上面这段代码的下面插入如下代码: %以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字。 则现实空白内容 input = str2num(get(hObject,'String')); %检查输入是否为空. 如果为空,则默认显示为0 if(isempty(input)) set(hObject,'String','0')

MATLAB教程2

MATLAB优化应用 §1 线性规划模型 一、线性规划课题: 实例1:生产计划问题 假设某厂计划生产甲、乙两种产品,现库存主要材料有A类3600公斤,B类2000公斤,C类3000公斤。每件甲产品需用材料A类9公斤,B类4公斤,C类3公斤。每件乙产品,需用材料A类4公斤,B类5公斤,C类10公斤。甲单位产品的利润70元,乙单位产品的利润120元。问如何安排生产,才能使该厂所获的利润最大。 建立数学模型: 设x1、x2分别为生产甲、乙产品的件数。f为该厂所获总润。 max f=70x1+120x2 s.t 9x1+4x2≤3600 4x 1+5x 2 ≤2000 3x 1+10x 2 ≤3000 x 1,x 2 ≥0 实例2:投资问题 某公司有一批资金用于4个工程项目的投资,其投资各项目时所得的净收益(投入资金锪百分比)如下表: 工程项目收益表 由于某种原因,决定用于项目A的投资不大于其他各项投资之和而用于项目B和C的投资要大于项目D的投资。试确定全文该公司收益最大的投资分配方案。 建立数学模型: 设x1 、x2 、x3 、x4分别代表用于项目A、B、C、D的投资百分数。 max f=0.15x1+0.1x2+0.08 x3+0.12 x4 s.t x1-x2- x3- x4≤0 x2+ x3- x4≥0 x1+x2+x3+ x4=1

x j ≥0 j=1,2,3,4 实例3:运输问题 有A 、B 、C 三个食品加工厂,负责供给甲、乙、丙、丁四个市场。三个厂每天生产食品箱数上限如下表: 建立数学模型: 设a i j 为由工厂i 运到市场j 的费用,x i j 是由工厂i 运到市场j 的箱数。b i 是工厂i 的产量,d j 是市场j 的需求量。 ????? ? ?=11 4 31231 2312A ????? ??=3433 32 31 24232221 14131211x x x x x x x x x x x x X b= ( 60 40 50 ) d= ( 20 35 33 34 ) ∑∑=== 3 1 4 1 min i j ij ij x a f s.t 3 ,2,14 1=≤∑=i b x i j ij 4 ,3,2,13 1 ==∑=j d x i j ij x i j ≥0 当我们用MA TLAB 软件作优化问题时,所有求maxf 的问题化为求min(-f )来作。约束g i (x)≥0,化为 –g i ≤0来作。

相关主题
文本预览
相关文档 最新文档