第2章 MATLAB数值计算(9)

2019-08-31 19:40

x2 =

0 0 300 300 x3=ps(1).position(1,3)

x3 = 300

程序分析:x1是一个结构;x2是矩阵;x3是标量。 (2) 用getfield获取结构数组的数据

x4=getfield(ps,{1},'color')

x4 = red

x5=getfield(ps,{1},'color',{1})

x5 = r

(3) 用setfield设置结构数组的数据

ps=setfield(ps,{1},'color','green'); ps(1)

ans =

name: '曲线1' color: 'green'

position: [0 0 300 300]

3. 结构数组域的获取

(1) 使用fieldnames获取结构数组的所有域:

x6=fieldnames(ps)

x6 =

'name' 'color'

'position'

程序分析:x6是元胞数组,各变量在工作空间的数据类型如图2.8所示。

图2.8 工作空间 (2) 获取结构数组域的数据

? 使用“[]”合并相同域的数据并排成水平向量:

all_x=[ps.name]

all_x =

曲线1曲线2

? 使用cat将其变成多维数组:

cat(1,ps.position) %沿第一维排列

ans =

0 0 300 300 100 100 300 300

cat(2,ps.position) %沿第二维排列

ans =

0 0 300 300 100 100 300 300 cat(3,ps.position) %沿第三维排列

ans(:,:,1) =

0 0 300 300 ans(:,:,2) =

100 100 300 300

2.6数据分析

数据分析按照以下原则:

? 如果输入是向量,则按整个向量进行运算。 ? 如果输入是矩阵,则按列进行运算。

2.6.1数据统计和相关分析

相关分析包括计算协方差和相关系数,相关系数越大说明相关性越强。

例如,用某年一月份中连续四天的温度数据构成4×3的矩阵a,包括最高温度、最低温度和平均温度如表2.9所示。列为按最高温度、最低温度和平均温度进行分类,而行是每天的温度数据样本。

表2.9 四天的温度

平均温度 5.30 5.10 3.70 1.50 最高温度 13.00 11.80 8.10 7.70

最低温度 0.40 -1.70 0.60 -4.50 对该矩阵进行简单数据统计分析,MATLAB函数如表2.10所示。

表2.10 数据统计分析函数

函数名 max(X) min(X) mean(X) 功能 矩阵中各列的最大值。 矩阵中各列最小值。 矩阵中各列平均值。 例子结果 5.3000 13.0000 0.6000 1.5000 7.7000 -4.5000 3.9000 10.1500 -1.3000 std(X) median(X) var(X) C=cov(X) 矩阵中各列标准差,指各元素与该列平均值(mean)之差的平方和开方。 矩阵中各列的中间元素。 矩阵中各列的方差。 矩阵中各列间的协方差。 矩阵中各列间的相关系数矩阵,与协方差3.9000 10.1500 -1.3000 4.4000 9.9500 -0.6500 3.0667 7.0167 5.6333 3.0667 4.0867 3.0667 4.0867 7.0167 2.7100 3.0667 2.7100 5.6333 1.0000 0.8810 0.7378 0.8810 1.0000 0.4310 0.7378 0.4310 1.0000 sort(a,1)= 1.5000 7.7000 -4.5000 3.7000 8.1000 -1.7000 5.1000 11.8000 0.4000 5.3000 13.0000 0.6000 S=corrcoef(X) C的关系为:S(i,j)=C(i,j)/C(i,i)C(j,j)。对角线为x和y的自相关系数。 沿第n维按模增大重新排序,k为S元素的原位置。 [S,k]=sort(X,n)

2.6.2差分和积分

MATLAB可以通过函数对矩阵的差分和积分等进行方便地运算。常用的差分和积分函数如表2.11所示。

其中矩阵a仍然是前例中的温度数据: a =

5.3000 13.0000 0.4000 5.1000 11.8000 -1.7000 3.7000 8.1000 0.6000 1.5000 7.7000 -4.5000

表2.11 差分和累计的数据处理函数

例子 函数名 功能 输入 diff(X,m,n) 沿第n维求第m阶列向差分。差分是求相邻行之间的差,结果会减少一行。 对Z求x、y方向的数值梯度。 矩阵各列元素的和。 沿第n维求累计和 diff(a,1,1) %沿第一维求一阶差分 gradient(a) %对列求数值梯度 sum(a) cumsum(a,2) %沿列求累计和 cumprod(a,2) %沿列求累计乘积 结果 -0.2000 -1.2000 -2.1000 -1.4000 -3.7000 2.3000 -2.2000 -0.4000 -5.1000 7.7000 -2.4500 -12.6000 6.7000 -3.4000 -13.5000 4.4000 -1.5500 -7.5000 6.2000 -3.0000 -12.2000 15.6000 40.6000 -5.2000 5.3000 18.3000 18.7000 5.1000 16.9000 15.2000 3.7000 11.8000 12.4000 1.5000 9.2000 4.7000 5.3000 68.9000 27.5600 5.1000 60.1800 -102.3060 3.7000 29.9700 17.9820 1.5000 11.5500 -51.9750 12.2000 30.2500 -3.1500 [fx,fy]=gradient(Z) sum(X) cumsum(X,n) cumprod(X,n) 沿第n维求累计乘积 梯形法求积分近似于求元素和,把相邻两点数据的平均值乘以步长表示面积。x为自变量,y为函数。 trapz(X,y) trapz(a) cumtrapz(X,y,n) 用梯形法沿第n维求函数y对自变量x累计积分。 cumtrapz(a)%用梯形法沿列向积分 0 0 0 5.2000 12.4000 -0.6500 9.6000 22.3500 -1.2000 12.2000 30.2500 -3.1500 【例2.26】已知y?e?0.2sin(t),其中t的范围是[0 10],计算y的微分和积分。y的微分和积分曲线如图2.9所示。

t=0:0.5:10;

y=exp(-0.2).*sin(t)

y =

Columns 1 through 7

0 0.3925 0.6889 0.8167 0.7445 0.4900 0.1155

Columns 8 through 14

-0.2872 -0.6196 -0.8003 -0.7851 -0.5776 -0.2288 0.1761

Columns 15 through 21

0.5379 0.7680 0.8100 0.6537 0.3374 -0.0615 -0.4454

d=[0 diff(y)] %计算微分

d =

Columns 1 through 7

0 0.3925 0.2964 0.1277 -0.0722 -0.2545 -0.3744

Columns 8 through 14

-0.4027 -0.3324 -0.1807 0.0152 0.2075 0.3489 0.4049

Columns 15 through 21

0.3618 0.2301 0.0420 -0.1563 -0.3163 -0.3989 -0.3839

s1=0.5*cumsum(y) %用矩形法计算积分,横坐标两点间隔为0.5

s1 =

Columns 1 through 7

0 0.1963 0.5407 0.9491 1.3213 1.5663 1.6241

Columns 8 through 14

1.4805 1.1707 0.7705 0.3779 0.0891 -0.0253 0.0628

Columns 15 through 21

0.3317 0.7157 1.1207 1.4476 1.6163 1.5856 1.3629

s2=cumtrapz(t,y) %用梯形法计算积分

s2 =

Columns 1 through 7

0 0.0981 0.3685 0.7449 1.1352 1.4438 1.5952

Columns 8 through 14

1.5523 1.3256 0.9706 0.5742 0.2335 0.0319 0.0188

Columns 15 through 21

0.1973 0.5237 0.9182 1.2842 1.5320 1.6009 1.4742

图2.9 微分和积分曲线图

2.6.3卷积和快速傅里叶变换

1. 卷积

卷积和解卷是信号与系统中常用的数学工具。函数conv和deconv分别为卷积和解卷函数,同时也是多项式乘法和除法(2.4.2小节)函数。

? conv:计算向量的卷积。 语法: conv(x,y)

如果x是输入信号,y是线性系统的脉冲过渡函数,则x和y的卷积为系统的输出信号。

? conv2:计算二维卷积。 ? deconv:解卷积运算。 语法:

[q,r]=deconv(x,y)

解卷积和卷积的关系是:x=conv(y,q)+r。

2. 快速傅立叶变换

? fft:一维快速傅立叶变换。 语法:


第2章 MATLAB数值计算(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年内蒙古财经大学会计专硕学制、学费、招生人数、网报数据、

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: