设为首页
加入收藏
联系我们
电脑入门 | 操作系统 | 工具软件 | 病毒安全 | 平面设计 | 媒体动画 | 网页制作 | 网络编程 | 数 据 库 | 服 务 器 | 程序设计 
认证考试 | 网管大全 | 站长CLUB | 游戏娱乐 | 机械电子 | 学院热门 | 热门源码 | 软件新闻 | 驱动下载 
您当前的位置:藏经阁资源站 -> 机械电子 -> MATLAB -> Matlab基础 -> 教程内容 退出登录 用户管理
栏目导航
热门教程
· 劲舞团8K舞步 1.7最新舞步 魔神舞步
· [组图] 上网助手反间谍专家火热试用
· [组图] Win2000/XP/2003:系统万能Ghost全攻略
· [组图] Photoshop超酷海报效果
· [图文] 一分钟攻破ADSL 盗遍宽带密码1
· [组图] MATLAB 概 论
· AutoCAD二次开发语言及工具介绍
· [组图] Photoshop合成图:蛋壳-女孩
· [图文] 《仙剑奇侠传4》绝密情报 首度曝光
· [组图] 初学java常用开发工具介绍
· [图文] 将数码照片做成自动放映的Flash
· [图文] [常用]免费短信收发工具串串烧
· [图文] 《上古卷轴4》杂志扫描图抢先看
· 超全!Windows快捷键大全
· Pro/E 功能
· [组图] 用Pro/E画减速机渐开线斜齿圆柱齿轮的一般方法
· [组图] FLASH:《大话李白》创作全过程
· [组图] 使用Visual LISP创建简单的LISP应用程序
· 2004年计算机等级考试二级C语言试题及答案
· [图文] 信不信由你 KMPlayer隐藏着“雷电”
相关教程
· MATLAB 数组运算和矩阵运算
· MATLAB 二维数组的创建
· MATLAB 一维数组的创建和寻访
· [图文] MATLAB 引导
· MATLAB 文件管理
· MATLAB 指令窗中的help指令和lookfor指令
· [图文] MATLAB 控制指令窗的指令、操作和标点
· [图文] MATLAB 指令窗运行入门
· [组图] MATLAB 概 论
· matlab调试工具
· [组图] matlab数值分析(2)
· [组图] matlab数值分析(1)
· [组图] matlab多项式
· MATLAB IF-ELSE-END 结构
· MATLAB While 循环
· MATLAB For 循环
· MATLAB字符串函数
· MATLAB字符串转换
· MATLAB字符串
· [图文] MATLAB关系与逻辑函数
matlab数据分析
作者:佚名  来源:不详  发布时间:2005-3-22 10:49:22  发布人:admin

减小字体 增大字体

由于MATLAB面向矩阵,所以它很容易对数据集合进行统计分析。按规定,数据集存储在面向列的矩阵里。也就是,一个矩阵的每一列代表不同的被测变量,每一行代表各个样本或观察值。例如,让我们假定,一个月31天的三城市每日高温(单位为0C)被记录,并赋给脚本M文件中的变量temps,在精通MATLAB工具箱里取名为mmtemp.m。运行M文件,把变量temps放在MATLAB工作空间里。这样,变量temps包含:

» temps

temps =

12818

15922

12519

14823

12622

119 19

15915

81020

19718

12718

141019

11817

9723

8819

15818

8920

10717

12722

9819

12821

12820

10917

131218

91020

10622

14721

12522

13718

151023

131124

121222

每一行包含了给定一天的高温;每一列包含不同城市的高温。为了使数据可视,把它绘图:

» d=1:31;%number the days of the month

» plot(d, temps)

» xlabel(' Day of Month '),ylabel(' Celsius ')

» title(' Daily High Temperatures in Three Cities ')

(见图9.1)

9.1三个城市的每日高温

上面的plot命令也说明了plot命令用法的另一种形式。变量d是一个长度为31的向量,而temps是一个31×3矩阵。给定这些数据,plot命令绘出了temps对每一列d的曲线。绘图在第78章进一步讨论。

为了说明MATLAB数据分析的一些功能,根据上面温度数据考虑以下命令。

» avg_temp=mean(temps)

avg_temp =

11.96778.225819.8710

表明第三个城市有最高平均温度。这里MATLAB分别地找出了各列的平均值。

» avg_avg=mean(avg_temp)

avg_avg =

13.3548

找出了三个城市的总平均温度。当输入到数据分析函数是行或列向量时,MATLAB仅对向量执行运算,返回一个标量。

考虑从各城市的均值求每日偏差的问题。即必须从tempsi列中减去avg_temp(i)。我们不能仅仅用以下的语句

» temps-avg_temp

??? Error using ==> -

Matrix dimensions must agree.

因为这个操作不是一个已定义的数组操作(temps31×3avg_temp1×3)。或许最直接的方法是使用For循环。

for i=1:3

tdev( : , i)=temps( : , i)-avg_temp(i) ;

end

» tdev

tdev =

0.0323-0.2258-1.8710

3.03230.77422.1290

0.0323-3.2258-0.8710

2.0323-0.22583.1290

0.0323-2.22582.1290

-0.96770.7742-0.8710

3.03230.7742-4.8710

-3.96771.77420.1290

7.0323-1.2258-1.8710

0.0323-1.2258-1.8710

2.03231.7742-0.8710

-0.9677-0.2258-2.8710

-2.9677-1.22583.1290

-3.9677-0.2258-0.8710

3.0323-0.2258-1.8710

-3.96770.77420.1290

-1.9677-1.2258-2.8710

0.0323-1.22582.1290

-2.9677-0.2258-0.8710

0.0323-0.22581.1290

0.0323-0.22580.1290

-1.96770.7742-2.8710

1.03233.7742-1.8710

-2.96771.77420.1290

-1.9677-2.22582.1290

2.0323-1.22581.1290

0.0323-3.22582.1290

1.0323-1.2258-1.8710

3.03231.77423.1290

1.03232.77424.1290

0.03233.77422.1290

虽然使用上面的方法有效,但比使用MATLAB的数组操作功能要慢。复制avg_temp,使得它与temps有同样的大小,然后再做减法,这样就快得多。

» tdev=temps-avg_temp(ones(31,1),:)

tdev =

0.0323-0.2258-1.8710

3.03230.77422.1290

0.0323-3.2258-0.8710

2.0323-0.22583.1290

0.0323-2.22582.1290

-0.96770.7742-0.8710

3.03230.7742-4.8710

-3.96771.77420.1290

7.0323-1.2258-1.8710

0.0323-1.2258-1.8710

2.03231.7742-0.8710

-0.9677-0.2258-2.8710

-2.9677-1.22583.1290

-3.9677-0.2258-0.8710

3.0323-0.2258-1.8710

-3.96770.77420.1290

-1.9677-1.2258-2.8710

0.0323-1.22582.1290

-2.9677-0.2258-0.8710

0.0323-0.22581.1290

0.0323-0.22580.1290

-1.96770.7742-2.8710

1.03233.7742-1.8710

-2.96771.77420.1290

-1.9677-2.22582.1290

2.0323-1.22581.1290

0.0323-3.22582.1290

1.0323-1.2258-1.8710

3.03231.77423.1290

1.03232.77424.1290

0.03233.77422.1290

这里avg_temp(ones(31, 1),:)复制avg_temp的第一行(且仅)31次,创建了一个31×3的矩阵,其第i列是avg_temp(i)

» max_temp=max(temps)

max_temp =

191224

找出了每个城市一个月的最高温度。

» [max_temp, x]=max(temps)

max_temp =

191224

x =

92330

找出了每个城市的最高温度和出现最高温度的行下标x。对于这个例子,当发生最高温度时,x辨认了月中的日期。

» min_temp=min(temps)

min_temp =

8515

找出了各城市一个月的最低温度。

» [min_temp, n]=min(temps)

min_temp =

8515

n =

837

找出了每个城市的最低温度和出现最低温度时行下标n。对于这个例子,当发生最低温度时,n辨认月中的日期。

» s_dev=std(temps)

s_dev =

2.50981.76462.2322

找出temps的标准偏差。

» daily_change=diff(temps)

daily_change =

314

-3-4-3

234

-2-2-1

-13-3

40-4

-715

11-3-2

-700

231

-3-2-2

-2-16

-11-4

70-1

-712

2-2-3

205

-31-3

302

00-1

-21-3

331

-4-22

1-42

41-1

-2-21

12-4

235

-211

-11-2

计算每日高温之间的偏差,它描述了逐天日高温的变化有多大。例如,daily_change的第一行是每月的第一天和第二天之间的日温度变化量。

9.1数据分析函数

MATLAB里的数据分析是按面向列矩阵而进行的。不同的变量存储在各列中,而每行表示每个变量的不同观察。MATLAB统计函数包括

9.1

据分析函数

corrcoef(x)

求相关系数

cov(x)

协方差矩阵

cplxpair(x)

把向量分类为复共轭对

cross(x, y)

向量的向量积

cumprod(x)

列累计积

cumsum(x)

列累计和

del2(A)

五点离散拉氏算子

diff(x)

计算元素之间差

dot(x, y)

向量的点积

gradient(Z, dx, dy)

近似梯度

histogram(x)

直方图和棒图

max(x),max(x, y)

最大分量

mean(x)

均值或列的平均值

median(x)

列的中值

min(x),min(x, y)

最小分量

prod(x)

列元素的积

rand(x)

均匀分布随机数

randn(x)

正态分布随机数

sort(x)

按升序排列

std(x)

列的标准偏差

subspace(A, B)

两个子空间之间的夹角

sum(x)

各列的元素和

9.2 M文件举例

在这一章里,说明在精通MATLAB工具箱里的两个函数。这些函数说明了本章所示的minmax函数的变种和如何编写一个M文件。关于M文件的更多信息,参阅第8章。

在讨论M文件函数mminmmax的内部结构之前,考虑他们有什么功能。

» amn_temp=mmin(temps)

amn_temp =

5

» [m , i]=mmin(temps)

m =

5

i =

32

» amx_temp=mmax(temps)

amx_temp =

24

» [m , j]=mmax(temps)

m =

24

j =

303

具有一个输出参量的函数mmin找出矩阵中的单个最小值。用第二个输出参量,返回单个最小值的行和列的下标。除了mmax返回矩阵中的单个最大值外,函数mmax的工作方式与mmin相同。这些M文件的函数是:

function [m , i]=mmin(a)

%MMIN Matrix minimum value.

%MMIN(A) returns the minimum value in the matrix A

%[M,I] = MMIN(A) in addition returns the indices of

%the minimum value in I = [row col].

%Copyright (c) 1996 by Prentice Hall,Inc.

if nargout==2, % return indices

[m , i]=min(a) ;

[m , ic]=min(m) ;

i=[i(ic)ic] ;

else,

m=min(min(a));

end

function [m , i]=mmax(a)

%MMAX Matrix maximum value.

%MMAX(A) returns the maximum value in the matrix A

%[M,I] = MMAX(A) in addition returns the indices of

%the maximum value in I = [row col].

%Copyright (c) 1996 by Prentice Hall,Inc.

if nargout==2,%return indices

[m , i]=max(a) ;

[m , ic]=max(m) ;

i=[i(ic)ic] ;

else,

m=max(max(a)) ;

          end

[] [返回上一页] [打 印] [收 藏]
上一篇教程:M文件函数
下一篇教程:matlab多项式
∷相关教程评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 
Copyright © 2000-2006 18839.Com. All Rights Reserved .
EMAIL:webmaster@18839.com 联系QQ:63191918 苏ICP备05065193号 带宽支持:三九互联