Matlab中文教程44页word资料.docx

上传人:b****5 文档编号:28833204 上传时间:2023-07-20 格式:DOCX 页数:42 大小:164.08KB
下载 相关 举报
Matlab中文教程44页word资料.docx_第1页
第1页 / 共42页
Matlab中文教程44页word资料.docx_第2页
第2页 / 共42页
Matlab中文教程44页word资料.docx_第3页
第3页 / 共42页
Matlab中文教程44页word资料.docx_第4页
第4页 / 共42页
Matlab中文教程44页word资料.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

Matlab中文教程44页word资料.docx

《Matlab中文教程44页word资料.docx》由会员分享,可在线阅读,更多相关《Matlab中文教程44页word资料.docx(42页珍藏版)》请在冰豆网上搜索。

Matlab中文教程44页word资料.docx

Matlab中文教程44页word资料

MatLab简介

家庭是幼儿语言活动的重要环境,为了与家长配合做好幼儿阅读训练工作,孩子一入园就召开家长会,给家长提出早期抓好幼儿阅读的要求。

我把幼儿在园里的阅读活动及阅读情况及时传递给家长,要求孩子回家向家长朗诵儿歌,表演故事。

我和家长共同配合,一道训练,幼儿的阅读能力提高很快。

MATLAB是什么?

宋以后,京师所设小学馆和武学堂中的教师称谓皆称之为“教谕”。

至元明清之县学一律循之不变。

明朝入选翰林院的进士之师称“教习”。

到清末,学堂兴起,各科教师仍沿用“教习”一称。

其实“教谕”在明清时还有学官一意,即主管县一级的教育生员。

而相应府和州掌管教育生员者则谓“教授”和“学正”。

“教授”“学正”和“教谕”的副手一律称“训导”。

于民间,特别是汉代以后,对于在“校”或“学”中传授经学者也称为“经师”。

在一些特定的讲学场合,比如书院、皇室,也称教师为“院长、西席、讲席”等。

典型的使用包括:

  数学和计算

  算术发展模型,

  模拟,和原型

  数据分析,开发,和可视化

  科学和工程图学

  应用发展包括图形用户界面设计

课本、报刊杂志中的成语、名言警句等俯首皆是,但学生写作文运用到文章中的甚少,即使运用也很难做到恰如其分。

为什么?

还是没有彻底“记死”的缘故。

要解决这个问题,方法很简单,每天花3-5分钟左右的时间记一条成语、一则名言警句即可。

可以写在后黑板的“积累专栏”上每日一换,可以在每天课前的3分钟让学生轮流讲解,也可让学生个人搜集,每天往笔记本上抄写,教师定期检查等等。

这样,一年就可记300多条成语、300多则名言警句,日积月累,终究会成为一笔不小的财富。

这些成语典故“贮藏”在学生脑中,自然会出口成章,写作时便会随心所欲地“提取”出来,使文章增色添辉。

MATLAB表示矩阵实验室。

MATLAB系统

MATLAB系统由5主要的部分构成:

1.MATLAB语言。

这是高阶的矩阵/数组语言,带控制流动陈述,函数,数据结构,输入/输出,而且面向目标的编程特点。

    Ops操作符和特殊字符。

    Lang程序设计语言作。

    strfun字符串。

    iofun输入/输出。

    timefun时期和标有日期。

    datatypes数据类型和结构。

2.MATLAB工作环境。

这是你作为MATLAB用户或程序编制员的一套工具和设施。

3.制图这是MATLAB制图系统。

它为2维上,而且三维的数据可视化,图象处理,动画片制作和表示图形包括高阶的指令在内。

它也为包括低阶的指令在内,允许你建造完整的图形用户界面(GUIs),MATLAB应用。

制图法功能在MATLAB工具箱中被组织成5文件夹:

    graph2d2-的维数上的图表。

    graph3d三维的图表。

    specgraph专业化图表。

    graphics制图法。

    uitools图形用户界面工具。

4.MATLAB的数学的函数库。

数学和分析的功能在MATLAB工具箱中被组织成8文件夹。

    elmat初步矩阵,和矩阵操作。

    elfun初步的数学函数。

    specfun专门的数学函数。

    matfun矩阵函数-用数字表示的线性的代数。

    datafun数据分析和傅立叶变换。

    polyfun插入物,并且多项式。

    funfun功能函数。

    sparfun稀少矩阵。

5.MATLAB应用程序接口(API)。

这是允许你写C、Fortran语言与MATLAB交互。

关于Simulink

Simulink?

MATLAB为做非线性的动态的系统的模拟实验的交互式的系统。

它是允许你通过把方框图拉到屏幕,灵活地窜改它制作系统的模型的用图表示的鼠标驱动的程序。

实时工作室?

允许你产生来自你的图表块的C代码,使之能用于各种实时系统。

关于工具箱

工具箱是为了解答特别种类的问题扩展MATLAB环境的MATLAB函数的综合的(M-文件)收集

MatLab工作环境

命令窗口

若输入

A=[123;456;7810]

按下回车键后显示如下

A=

  123

  456

  7810

清除命令窗口

clc

这并不清除工作间,只是清除了显示,仍可按上箭头看到以前发出的命令

数据格式命令

x=[4/31.2345e–6]

formatshort

  1.33330.0000

formatshorte

  1.3333e+0001.2345e–006

formatshortg

  1.33331.2345e–006

formatlong

  1.333333333333330.00000123450000

formatlonge

  1.333333333333333e+0001.234500000000000e–006

formatlongg

  1.333333333333331.2345e–006

formatbank

  1.330.00

format+

  ++

formatrat

  4/31/810045

formathex

  3ff55555555555553eb4b6231abfd271

若最大的元素大于1000或小于0.001,则显示short或long格式时时会加上一个比例

还有两个格式:

  formatcompact

  formatloose

禁止结果的显示

在命令后加上分号,则屏幕上不会立即显示出结果,这在运算大的数据量时十分有用,如下命令产生100*100的幻方:

A=magic(100);

长命令行

如想另起一行输入命令,在末尾加上"..."即可,如:

s=1–1/2+1/3–1/4+1/5–1/6+1/7...

–1/8+1/9–1/10+1/11–1/12;

MatLab工作间

你可用who或whos来察看当前工作间中有哪些变量,如:

whos

NameSizeBytesClass

A  4x4128 doublearray

D  3x5120 doublearray

M  10x140 cellarray

S  1x3628 structarray

h  1x1122 chararray

n  1x1 8 doublearray

s  1x5 10 chararray

v  1x1428 chararray 

Grandtotalis93elementsusing984bytes

若要从工作间中删除所有的变量,用

clear

保存、重载工作间

你可以将工作间保存为一个二进制的M文件,以后还可以恢复回来:

savejune10

也可只保存工作间中的部分变量值

savejune10xyz

重载时只需输入

loadjune10

文件名保存在字符串中

这样可以像调用函数一样调用工作间

save(’myfile’,’VAR1’,’VAR2’)

A=’myfile’;

load(A)

与下面的命令相同

savemyfileVAR1VAR2

loadmyfile

下面的命令把1至10的平方值分别存放在data1至data10中:

file=’data’;

fori=1:

10j=i.^2;

  save([fileint2str(i)],’j’);

end

查找路径

当你输入“yourpig"时发生了什么呢?

1:

察看是否是变量;

2:

察看是否是内建函数;

3:

察看当前目录下是否有文件:

yourpig.m;

4:

察看查找目录下是否有文件:

yourpig.m;

对于查找路径中的文件,what显示当前目录下的文件,加上路径后可显示输入的路径下所有的MatLab文件.如:

whatmatlab/elfun

以下二命令分别显示、编辑m文件

typerank

editrank

图像窗口

下面的命令产生一个与命令窗口隔离的图形窗口,

figure

plot函数则会在新的窗口中绘制图形,如

t=0:

pi/100:

2*pi;

y=sin(t);

plot(t,y)

则有如下图形:

寻求帮助

下面的函数在寻求帮助时十分有用:

help     列出你所寻求帮助的函数的功能描述;

lookfor   列出所有函数的功能描述中含有你所输入的内容的函数的简介

如:

helpinverse

显示

inverse.mnotfound.

但如输入

lookforinverse

则显示

INVHILBInverseHilbertmatrix

ACOSHInversehyperboliccosine

ERFINVInverseoftheerrorfunction

INVMatrixinverse

PINVPseudoinverse

IFFTInversediscreteFouriertransform

IFFT2Two–dimensionalinversediscreteFouriertransform

ICCEPSInversecomplexcepstrum

IDCTInversediscretecosinetransform

数据分析和统计

面向列的数据集

  这年头似乎十分风行”面向”这个词,这儿故也套用,其英文为"Column-OrientedDataSets",可理解为MatLab按列的存储方式来分析数据,下面是一个例子:

 

Time  Location1  Location2  Location3

01h00   11       11      9

02h00   7        13      11

03h00   14       17      20

04h00   11       13      9

05h00   43       51      69

06h00   38       46      76

07h00   61       132      186

08h00   75       135      180

09h00   38       88      115

10h00   28       36      55

11h00   12       12      14

12h00   18       27      30

13h00   18       19      29

14h00   17       15      18

15h00   19       36      48

16h00   32       47      10

17h00   42       65      92

18h00   57       66      151

19h00   44       55      90

20h00   114      145      257

21h00   35       58      68

22h00   11       12      15

23h00   13       9       15

24h00   10       9       7

以上数据被保存在一个称为count.dat的文件中.

11119

71311

141720

11139

435169

384676

61132186

75135180

3888115

283655

121214

182730

181929

171518

193648

324710

426592

5766151

445590

114145257

355868

111215

13915

1097

下面,我们调入此文件,并看看文件的一些参数

loadcount.dat

[n,p]=size(count)

n=

  24

p=

  3

创建一个时间轴后,我们可以把图画出来:

t=1:

n;

set(0,'defaultaxeslinestyleorder’,’-|--|-.’)

set(0,'defaultaxescolororder’,[000])

plot(t,count),legend('Location1','Location2','Location3',0)

xlabel('Time'),ylabel('VehicleCount'),gridon

足以证明,以上是对3个对象的24次观测.

基本数据分析函数

(一定注意是面向列的)

继续用上面的数据,其每列最大值.均值.及偏差分别为:

mx=max(count)

mu=mean(count)

sigma=std(count)

mx=

  114  145  257

mu=

  32.0000  46.5417  65.5833

sigma=

  25.3703  41.4057  68.0281

重载函数,还可以定位出最大.最小值的位置

[mx,indx]=min(count)

mx=

  7  9  7

indx=

  2  23  24

试试看,你能看懂下面的命令是干什么的吗?

[n,p]=size(count)

e=ones(n,1)

x=count–e*mu

点这看看答案!

下面这句命令则找出了整个矩阵的最小值:

min(count(:

))

ans=

  7

协方差及相关系数

下面,我们来看看第一列的方差:

cov(count(:

1))

ans=

  643.6522

cov()函数作用于矩阵,则会计算其协方差矩阵.

corrcoef()用于计算相关系数,如:

corrcoef(count)

ans=

  1.00000.93310.9599

  0.93311.00000.9553

  0.95990.95531.0000

数据的预处理

未知数据

NaN(NotaNumber--不是一个数)被定义为未经定义的算式的结果,如0/0.在处理数据中,NaN常用来表示未知数据或未能获得的数据.所有与NaN有关的运算其结果都是NaN.

a=magic(3);

a(2,2)=NaN

a=

  8 1 6

  3 NaN7

  4 9 2

sum(a)

ans=

  15 NaN15

在做统计时,常需要将NaN转化为可计算的数字或去掉,以下是几种方法:

注:

判断一个值是否为NaN,只能用isnan(),而不可用x==NaN;

i=find(~isnan(x));

x=x(i)

先找出值不是NaN的项的下标,将这些元素保留

x=x(find(~isnan(x)))

同上,去掉NaN

x=x(~isnan(x));

更快的做法

x(isnan(x))=[];

消掉NaN

X(any(isnan(X)’),:

)=[];

把含有NaN的行都去掉

用此法可以从数据中去掉不相关的数据,看看下面的命令是干什么用的:

mu=mean(count);

sigma=std(count);

[n,p]=size(count)

outliers=abs(count—mu(ones(n,1),:

))>3*sigma(ones(n,1),:

);

nout=sum(outliers)

nout=

  1 0 0

count(any(outliers'),:

)=[];

点这看看答案

回归与曲线拟合

  我们经常需要把观测到的数据表达为函数,假如有如下的对时间的观测:

t=[0.3.81.11.62.3]’;

y=[0.50.821.141.251.351.40]’;

plot(t,y,’o’),

gridon

多项式回归

由图可以看出应该可以用多项式来表达:

y=a0+a1*t+a2*t^2

系数a0,a1,a2可以由最小平方拟合来确定,这一步可由反除号"\"来完成

解下面的三元方程组可得:

X=[ones(size(t))tt.^2]

X=

  1.0000 0    0

  1.0000 0.3000 0.0900

  1.0000 0.8000 0.6400

  1.0000 1.1000 1.2100

  1.0000 1.6000 2.5600

  1.0000 2.3000 5.2900

a=X\y

a=

  0.5318 0.9191 –0.2387

a即为待求的系数,画图比较可得

T=(0:

0.1:

2.5)’;

Y=[ones(size(T))TT.^2]*a;

plot(T,Y,'–',t,y,'o',),gridon

结果令人失望,但我们可以增加阶数来提高精确度,但更明智的选择是用别的方法.

线性参数回归

形如:

y=a0+a1*exp(-t)+a2*t*exp(-t)

计算方法同上:

X=[ones(size(t))exp(–t)t.*exp(–t)];

a=X\y

a=

  1.3974–0.89880.4097

T=(0:

0.1:

2.5)';

Y=[ones(size(T))exp(–T)T.exp(–T)]*a;

plot(T,Y,'–',t,y,'o'),gridon

看起来是不是好多了!

例子研究:

曲线拟合

  下面我们以美国人口普查的数据来研究一下有关曲线拟合的问题(MatLab是别人的,教学文档是别人的,例子也是别人的,我只是一个翻译而已...)

loadcensus

这样我们得到了两个变量,cdate是1790至1990年的时间列向量(10年一次),pop是相应人口数列向量.

上一小节所讲的多项式拟合可以用函数polyfit()来完成,数字指明了阶数

p=polyfit(cdate,pop,4)

  Warning:

Matrixisclosetosingularorbadlyscaled.

  Resultsmaybeinaccurate.RCOND=5.429790e–20

p=

  1.0e+05*

  0.0000–0.00000.0000–0.01266.0020

产生警告的原因是计算中的cdata值太大,在计算中的Vandermonde行列式使变换产生了问题,解决的方法之一是使数据标准化.

预处理:

标准化数据

数据的标准化是对数据进行缩放,以使以后的计算能更加精确,一种方法是使之成为0均值:

sdate=(cdate–mean(cdate))./std(cdate)

现在再进行曲线拟合就没事了!

p=polyfit(sdate,pop,4)

p=

0.70470.921023.470673.859862.2285

pop4=polyval(p,sdate);

plot(cdate,pop4,'–',cdate,pop,'+'),gridon

在上面的数据标准化中,也可以有别的算法,如令1790年的人口数为0.

余量分析

p1=polyfit(sdate,pop,1);

pop1=polyval(p1,sdate);

plot(cdate,pop1,'–',cdate,pop,'+')

res1=pop–pop1;

figure,plot(cdate,res1,'+')

p=polyfit(sdate,pop,2);

pop2=polyval(p,sdate);

plot(cdate,pop2,'–',cdate,pop,'+')

res2=pop–pop2;

figure,plot(cdate,res2,’+’)

p=polyfit(sdate,pop,4);

pop4=polyval(p,sdate);

plot(cdate,pop4,'–',cdate,pop,'+')

res4=pop–pop4;

figure,plot(cdate,res4,'+')

  可以看出,多项式拟合即使提高了阶次也无法达到令人满意的结果

指数拟合

  从人口增长图可以发现人数的增长基本是呈指数增加的,因此我们可以用年份的对数来进行拟合,这儿,年数是标准化后的!

logp1=polyfit(sdate,log10(pop),1);

logpred1=10.^polyval(logp1,sdate);

semilogy(cdate,logpred1,'–',cdate,pop,'+');

gridon

logres2=log10(pop)–polyval(logp2,sdate);

plot(cdate,logres2,'+')

上面的图不令人满意,下面,我们用二阶的对数分析:

logp2=polyfit(sdate,log10(pop),2);

logpred2=10.^polyval(logp2,sdate);

semilogy(cdate,logpred2,'–',cdate,pop,'+');

gridon

r=pop–10.^(polyval(logp2,sdate));

plot(cdate,r,'+')

这种余量分析比多项式拟合的余量分析图案要随机的多(没有很强的规律性),可以预见,随着人数的增加,余粮所反映的不确定度也在增加,但总的说来,这种拟合方式要强好多!

误差边界

误差边界常用来反映你所用的拟合方式是否适用于数据,为得到误差边界,只需在polyfit()中传递第二个参数,并将其送入polyval().

下面是一个二阶多项式拟合模型,年份已被标准化,下面的代码用了2σ,对应于95%的可置信度:

[p2,S2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1