当前位置:文档之家› 第2章--MATLAB数据及其运算-习题答案教学内容

第2章--MATLAB数据及其运算-习题答案教学内容

第2章--MATLAB数据及其运算-习题答案教学内容
第2章--MATLAB数据及其运算-习题答案教学内容

第2章--M A T L A B数据及其运算-习题答案

第2章 MATLAB数据及其运算

习题2

一、选择题

1.下列可作为MATLAB合法变量名的是()。D A.合计 B.123 C.@h D.xyz_2a 2.下列数值数据表示中错误的是()。C

A.+10 B.1.2e-5 C.2e D.2i

3.使用语句t=0:7生成的是()个元素的向量。A A.8 B.7 C.6 D.5

4.执行语句A=[1,2,3;4,5,6]后,A(3)的值是()。B A.1 B.2 C.3 D.4

5.已知a为3×3矩阵,则a(:,end)是指()。D A.所有元素 B.第一行元素

C.第三行元素 D.第三列元素

6.已知a为3×3矩阵,则运行a (1)=[]后()。A A.a变成行向量 B.a变为2行2列

C.a变为3行2列 D.a变为2行3列

7.在命令行窗口输入下列命令后,x的值是()。B >> clear

>> x=i*j

A.不确定 B.-1 C.1 D.i*j 8.fix(354/100)+mod(354,10)*10的值是()。D A.34 B.354 C.453 D.43

9.下列语句中错误的是()。B

A.x==y==3 B.x=y=3

C.x=y==3 D.y=3,x=y

10.find(1:2:20>15)的结果是()。C

A.19 20 B.17 19

C.9 10 D.8 9

11.输入字符串时,要用()将字符括起来。C A.[ ] B.{ } C.' ' D." " 12.已知s='显示"hello"',则s的元素个数是()。A A.9 B.11 C.7 D.18

13.eval('sqrt(4)+2')的值是()。B

A.sqrt(4)+2 B.4 C.2 D.2, 2

14.有3×4的结构矩阵student,每个结构有name(姓名)、scores(分数)两个成员,其中scores是以1×5矩阵表示的5门课的成绩,那么要删除第4个学生的第2门课成绩,应采用的正确命令是()。D

A.rmfield(student(1,2).scores(2)) B.rmfield(student(4).scores)

C.student(4).scores(2)=0 D.student(1,2).scores(2)=[]

15.有一个2行2列的单元矩阵c,则c(2)是指()。B

A.第一行第二列的元素内容 B.第二行第一列的元素内容

C.第一行第二列的元素 D.第二行第一列的元素

二、填空题

1.从键盘直接输入矩阵元素来建立矩阵时,将矩阵的元素用括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用分隔,不同行的元素之间用分隔。中括号,逗号或空格,分号

2.设A=[1,2;3,4],B=[5,6;7,8],则A*B= , A.*B= 。

A*B=[19,22;43,50],A.*B=[5,12;21,32]

3.有3×3矩阵,求其第 5个元素的下标的命令是,求其第三行、第三列元素的序号的命令是。[i,j]=ind2sub([3 3],5),ind=sub2ind([3 3],3,3)

4.下列命令执行后的输出结果是。20

>> ans=5;

>> 10;

>> ans+10

5.下列命令执行后,new_claim的值是。This is a great example.

claim= 'This is a good example.';

new_claim=strrep(claim,'good','great')

三、应用题

1.命令X=[]与clear X有何不同?请上机验证结论。

Clear X是将X从工作空间中删除,而X=[]是给X赋空矩阵。空矩阵存在于工作空间中,只是没有任何元素。

2.在一个MATLAB命令中,6 + 7i和6 + 7*i有何区别?i和I有何区别?3.设A和B是两个同大小的矩阵,试分析A*B和A.*B、A./B和B.\A、A/B 和B\A的区别?如果A和B是两个标量数据,结论又如何?

4.写出完成下列操作的命令。

(1)将矩阵A第2~5行中第1,3,5列元素赋给矩阵B。

(2)删除矩阵A的第5号元素。

(3)求矩阵A的大小和维数。

(4)将向量t 的0元素用机器零来代替。

(5)将含有12个元素的向量x 转换成3 × 4矩阵。

5.已知:

????????????---=14.35454

.9632053256545410778.01023Α 完成下列操作:

(1)取出 A 的前3行构成矩阵B ,前两列构成矩阵C ,右下角3×2子矩阵构成矩阵D ,B 与C 的乘积构成矩阵E 。

(2)分别求E=10&A<25)。

6.建立单元矩阵B ,并回答有关问题。

y.a=1;

y.b=[1:3;4:6];

B{1,1}=1;

B{1,2}='Brenden';

B{2,1}=y;

B{2,2}={12,34,2;54,21,3;4,23,67};

(1)size(B)和ndims(B)的值分别是多少?

(2)B(2)和B(4)的值分别是多少?

(3)B(3)=[]和B{3}=[]执行后,B 的值分别是多少?

matlab实现数值计算功能源程序(个人整理)

matlab数值计算功能 1,基础运算 (1)多项式的创建与表达 将多项式(x-6)(x-3)(x-8)表示为系数形式 a=[6 3 8] % 写成根矢量 pa=poly(a)% 求出系数矢量 ppa=poly2sym(pa,'x') % 表示成符号形式 ezplot(ppa,[-50,50]) 求3介方阵A的特征多项式 a=[6 2 4;7 5 6;1 3 6 ]; pa=poly(a)% 写出系数矢量 ppa=poly2sym(pa) %表示成符号形式 ezplot(ppa,[-50,50]) % 绘图 求x^3-6x^2-72x-27的根。 a=[1,-6,-72,-85]; % 写出多项式系数矢量 r=roots(a) % 求多项式的根 (2)多项式的乘除运算 c=conv(a,b) %乘法 [q,r]=deconv(c,a)% 除法 求a(s)=s^2+2s+3乘以b(s)=4s^2+5s+6的乘积 a=[1 2 3] b=[4 5 6] % 写出系数矢量 c=conv(a,b) c=poly2sym(c,'s') % 写成符号形式的多项式 展开(s^2+2s+2)(s+4)(s+1)并验证结果被(s+4),(s+3)除后的结果。c=conv([1,2,2],conv([1,4],[1,1])) cs=poly2sym(c,'s') c=[1 7 16 18 8] [q1,r1]=deconv(c,[1,4]) [q2,r2]=deconv(c,[1,3]) cc=conv(q2,[1,3]) test=((c-r2)==cc)

其他常用的多项式运算命令 pa=polyval(p,s) % 按数组规则计算给定s时多项式的值 pm=polyvalm(p,s)% 按矩阵规则计算给定s时多项式的值 [r,p,k]=residue(b,a) % 部分分式展开,b,a分别是分子,分母多项式系数矢量。r,p,k分别是留数,极点和值项矢量。 p=poly(x,y,n) % 用n介多项式拟合给定的数据 polyder(p) %多项式微分 x=[1 2 3 4 5]; y=[5.5 43.1 128 290.7 498.4]; p=polyfit(x,y,3) x2=1:0.1:5; y2=polyval(p,x2); plot(x,y,'o',x2,y2) 2,线性代数 1,求解方程的根 t=[0 0.3 0.8 1.1 1.6 2.3]'; y=[0.82 0.72 0.63 0.60 0.55 0.50]'; e=[ones(size(t)) exp(-t)] c=e\y t1=[0:0.1:2.5]'; y1=[ones(size(t1)),exp(-t1)]*c; plot(t1,y1,'b',t,y,'ro') 2,逆矩阵及行列式 inv(a) det(a) pinv(a) 3,矩阵分解(略) 4,数据分析 max(x)求x各列的最大元素 mean(x)求x各列的平均值 median(x)找出x各列的中位元素 min(x)求出x各列的最小元素 S=cumsum(x)求x各列元素累计和 sort(x)使x的各列元素按递增排序。 std(x)求x各列的标准差。 sum(x)求x各列元素之和 prod(x)求x各列元素之积

第06章_MATLAB数值计算_例题源程序汇总

第6章 MATLAB 数值计算 例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。 1356 78256323578255631 01-???? -? ?=???? -??A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素 max(max(A)) %求整个矩阵的最大元素。也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。也可使用命令:min(A(:)) 例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。 A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2) prod(S) %求A 的全部元素的乘积。也可以使用命令prod(A(:)) 例6.3 求向量X =(1!,2!,3!,…,10!)。 X=cumprod(1:10) 例6.4 对二维矩阵x ,从不同维方向求出其标准方差。 x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2) 例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。 X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)

例6.6 对下列矩阵做各种排序。 185412613713-?? ??=?? ??-?? A A=[1,-8,5;4,12,6;13,7,-13]; sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序 [X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I 例6.7 给出概率积分 2 (d x x f x x -? e 的数据表如表6.1所示,用不同的插值方法计算f (0.472)。 x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format long interp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short 例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。 T=0:5:65; X=2:5:57;

实验一数据处理方法MATLAB实现

实验一数据处理方法的MATLAB实现 一、实验目的 学会在MATLAB环境下对已知的数据进行处理。 二、实验方法 1. 求取数据的最大值或最小值。 2. 求取向量的均值、标准方差和中间值。 3.在MATLAB环境下,对已知的数据分别进行曲线拟合和插值。 三、实验设备 1.586以上微机,16M以上内存,400M硬盘空间,2X CD-ROM 2.MATLAB5.3以上含CONTROL SYSTEM TOOLBOX。 四、实验内容 1.在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 2.在MATLAB环境下,选择合适的曲线拟合和插值方法,编写程序,对已知的数据分别进行曲线拟合和插值。 五、实验步骤 1. 在MATLAB环境下,将已知的数据存到数据文件mydat.mat中。 双击打开Matlab,在命令窗口(command window)中,输入一组数据:实验一数据处理方法的MATLAB实现 一、实验目的 学会在MATLAB环境下对已知的数据进行处理。 二、实验方法 1. 求取数据的最大值或最小值。 2. 求取向量的均值、标准方差和中间值。 3.在MATLAB环境下,对已知的数据分别进行曲线拟合和插值。 三、实验设备 1.586以上微机,16M以上内存,400M硬盘空间,2X CD-ROM 2.MATLAB5.3以上含CONTROL SYSTEM TOOLBOX。 四、实验内容

1.在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 2.在MATLAB环境下,选择合适的曲线拟合和插值方法,编写程序,对已知的数据分别进行曲线拟合和插值。 五、实验步骤 1. 在MATLAB环境下,将已知的数据存到数据文件mydat.mat中。 双击打开Matlab,在命令窗口(command window)中,输入一组数据: x=[1,4,2,81,23,45] x = 1 4 2 81 2 3 45 单击保存按钮,保存在Matlab指定目录(C:\Program Files\MATLAB71)下,文件名为“mydat.mat”。 2. 在MATLAB环境下,利用MATLAB控制系统工具箱中的函数直接求取数据的最大值或最小值,以及向量的均值、标准方差和中间值。 继续在命令窗口中输入命令: (1)求取最大值“max(a)”; >> max(x) ans = 81 (2)求取最小值“min(a)”; >> min(x) ans = 1 (3)求取均值“mean(a)”; >> mean(x) ans =

数值分析的MATLAB程序

列主元法 function lianzhuyuan(A,b) n=input('请输入n:') %选择阶数A=zeros(n,n); %系数矩阵A b=zeros(n,1); %矩阵b X=zeros(n,1); %解X for i=1:n for j=1:n A(i,j)=(1/(i+j-1)); %生成hilbert矩阵A end b(i,1)=sum(A(i,:)); %生成矩阵b end for i=1:n-1 j=i; top=max(abs(A(i:n,j))); %列主元 k=j; while abs(A(k,j))~=top %列主元所在行 k=k+1; end for z=1:n %交换主元所在行a1=A(i,z); A(i,z)=A(k,z); A(k,z)=a1; end a2=b(i,1); b(i,1)=b(k,1); b(k,1)=a2; for s=i+1:n %消去算法开始m=A(s,j)/A(i,j); %化简为上三角矩阵 A(s,j)=0; for p=i+1:n A(s,p)=A(s,p)-m*A(i,p); end b(s,1)=b(s,1)-m*b(i,1); end end X(n,1)=b(n,1)/A(n,n); %回代开始 for i=n-1:-1:1 s=0; %初始化s for j=i+1:n s=s+A(i,j)*X(j,1);

end X(i,1)=(b(i,1)-s)/A(i,i); end X 欧拉法 clc clear % 欧拉法 p=10; %贝塔的取值 T=10; %t取值的上限 y1=1; %y1的初值 r1=1; %y2的初值 %输入步长h的值 h=input('欧拉法please input number(h=1 0.5 0.25 0.125 0.0625):h=') ; if h>1 or h<0 break end S1=0:T/h; S2=0:T/h; S3=0:T/h; S4=0:T/h; i=1; % 迭代过程 for t=0:h:T Y=(exp(-t)); R=(1/(p-1))*exp(-t)+((p-2)/(p-1))*exp(-p*t); y=y1+h*(-y1); y1=y; r=r1+h*(y1-p*r1); r1=r; S1(i)=Y; S2(i)=R; S3(i)=y; S4(i)=r; i=i+1; end t=[0:h:T]; % 红线为解析解,'x'为数值解 plot(t,S1,'r',t,S3,'x')

Matlab关于数值计算的实现

Matlab关于数值计算的实现 摘要:数值计算(numerical computation computation),主要研究更好的利用计算机更好的进行数值计算,解决各种数学问题。数值分析包括离散傅里叶变换,考虑截断误差,计算误差,函数的敛散性与稳定性等。在数学方面,数值计算的主要研究数值微分与积分,数据的处理与多项式计算,最优化问题,线性方程与非线性方程的求解,常微分方程的数值求解等。同时,数值计算在物理,化学,经济等方面也有研究,本文暂且不表。M atlab软件历经二十多年来的发展,已成为风靡世界的数学三大软件(matlb,Mathematica l,Maple)之一,在数学类科技应用软件中在数值计算方面首屈一指。Matlab以矩阵为数据操作的基本单位,使得矩阵运算十分便捷快速,同时Matlab还提供了海量的计算函数,而且使用可靠地算法进行计算,能使用户在繁复的数学运算中解脱,Matlab还具有方便且完善的图形处理功能,方便绘制二维和三维图形并修饰。

目录 1.数值分析(离散傅里叶变换,考虑截断误差,计算误差,函数 的敛散性与稳定性) 2.数值计算(数值微分与积分,数据的处理与多项式计算, 最优化问题,线性方程与非线性方程的求解,常微分方程的数值求解) 3.图形处理功能(方便绘制二维和三维图形并修饰) 4.总结

1.数据统计与分析 Matlab 可以进行求矩阵的最大最小元素,平均值与中值,关于矩阵元素的求和与求积,累加和与累乘积,标准方程,相关系数,元素排序。现在以求标准方差举例说明Matlab 的实现。 在Matlab 中,实现标准方差计算的函数为std 。对于向量(Y ),std (Y )实现返回一个标准方差,而对于矩阵(A ),std (A )返回一个行向量,该行向量的每个元素对应着矩阵A 各行或各列的标准方差。一般调用std 函数的格式为std (A ,flag ,dim ) Dim 取1或者2分别对应求各列或各行的标准方差,flag 取1时,按照标准方差的计算公式 ∑-=-=N i x x S i N 1 2 1)(11来计算。若flag 取2,则用公式 ∑-==N i x x S i N 1 2 2) (1 进行计算。默认的flag 取值为0,dim 取值为1。课本page143 2. 离散傅里叶变换 离散傅里叶变换广泛应用于信号的分析,光谱和声谱分析、全息技术等各个领域。但直接计算dft 的运算量与变化的长度N 的平方成正比,当N 较大时,计算量太大。随着计算机技术的迅速发展,在计算机上进行离散傅里叶变换计算成为可能。特别是快速傅里叶变换算法的出现,为傅里叶变换的应创造了条件。 (1):傅里叶变换算法的简述。 傅立叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。许多波形可作为信号的成分,比如正弦波、方波、锯齿波等,傅立叶变换用正弦波作为信号的成分. f(t)是t 的周期函数,如果t 满足狄里赫莱条件:在一个以2T 为周期内f(X)连续或只有有限个第一类间断点,附f (x )单调或可划分成有限个单调区间,则F (x )以2T 为周期的傅里叶级数收敛,和函数S (x )也是以2T 为周期的周期函数,且在这些间断点上,函数是有限值;在一个周期内具有有限个极值点;绝对可积。则有下图①式成立。称为积分运算f(t)的傅立叶变换, ②式的积分运算叫做F(ω)的傅立叶逆变换。F(ω)叫做f(t)的像函数,f(t)叫做 F(ω)的像原函数。F(ω)是f(t)的像。f(t)是F(ω)原像。 ①傅立叶变换 ②傅立叶逆变换

MATLAB实验二MATLAB的数值运算和程序

课程名称:Matlab语言 开设时间:2016—2017学年第 2 学期 专业班级:学生学号:学生姓名: 实验名称:实验二、MATLAB的数值运算和程序实验成绩: 指导教师:批改时间: 一、实验目的和要求 1)掌握基本的矩阵运算及常用的函数。 2)掌握MATLAB函数的编写及调试方法。 3)掌握MATLAB常用的数值运算函数。 二、实验仪器和设备 计算机一台 三、实验过程 1、一维数组在命令窗口执行下面指令,观察输出结果,体味数组创建和寻访方法,%号后面的为注释,不用输入。 rand('state',0) % 把均匀分布伪随机发生器置为0 状态 x=rand(1,5) % 产生(1*5)的均布随机数组 x(3) % 寻访数组x 的第三个元素。 x([1 2 5]) % 寻访数组x 的第一、二、五个元素组成的子数组。 x(1:3) % 寻访前三个元素组成的子数组 x(3:end) % 寻访除前2 个元素外的全部其他元素。end 是最后一个元素的下标。 x(3:-1:1) % 由前三个元素倒排构成的子数组 x(find(x>0.5)) % 由大于0.5 的元素构成的子数组 x([1 2 3 4 4 3 2 1]) % 对元素可以重复寻访,使所得数组长度允许大于原数组。 x(3) = 0 % 把上例中的第三个元素重新赋值为0。 x([1 4])=[1 1] % 把当前x 数组的第一、四个元素都赋值为1。 x[3]=[] % 空数组的赋值操作

2、在命令窗口执行下面指令,观察输出结果 a=2.7358; b=33/79; % 这两条指令分别给变量 a , b 赋值。 C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i] % 这指令用于创建二维组C M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16] % 创建复数数组的另一种方法 CN=M_r+i*M_i % 由实部、虚部数组构成复数数组 3. 记录下面题目的程序和运行后的结果。 1??????=654321a ??????-=531142b ???? ? ?????-=201c ??????????=063258741d 下列运算是否合法,为什么?如合法,结果是多少?

MATLAB在化工数据处理中的应用

化工数据处理与实验设计 期中论文 Matlab在化工数据处理中的应用 姓名:陈奕含 学号:2012115134 班级:化学工程与工艺

Matlab在化工数据处理中的应用 一、MATLAB简介 Matlab软件包最初是1967年由Clere Maler用FORTRAN语言设计和编写的。1984年Mathworks公司用C语言完成了Matlab的商业化版本并推向市场。经过20余年的改进,Matlab已发展成为一个具有极高通用性的、带有众多实用工具的运算平台,成为国际上广泛认可的优秀科学计算软件。 Matlab是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国Mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 Matlab和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。Matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 Matlab的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用Matlab来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且Matlab也吸收了像Maple等软件的优点,使Matlab成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JA V A的支持。其特点如下: 1.支持多平台操作系统(Windows、Unix等)。 2.是一种简单易学的编程语言。 3.Matlab程序很容易维护。 4.编程效率很高。由于用户程序可直接调用大量的Matlab函数,因此编程速度快。 5.用途广泛。可用于数值计算和符号计算、数据分析、工程与科学绘图、图形用户界面设计、建模和仿真、控制系统设计、数字图像信号处理以及财务工程等。 6.功能超强。包含600多个常用算法内建函数,有众多面向具体应用的工具箱(如偏微分方程、最优化方法、数理统计、样条函数、神经网络工具箱等)和simulink仿真模块。此外,其他产品延伸了Matlab的能力,包括数据采集和依靠Matlab语言编程产生独立的C/C++代码等等。其算法函数大多由国际知名专家完成,算法稳定可靠、效率高。 7.具有开放式结构,扩展功能强。Matlab的开放式结构使Matlab产品族很

基于MATLAB的EXCEL数据计算与分析

基于MATLAB的EXCEL数据计算与分析 潜刘方 摘要:再怎么样希望先看摘要,阅读本文需要一定的MA TLAB基础知识,不需要excel相关知识。结合本人近期工作上的需要测量计算,想偷懒就选择了利用MATLAB偷懒,于是便有了本文。本文首先利用MA TLAB读取数据,计算,将数据写入excel,然后花了很大的精力来根据实际需要画图,最后将图保存在excel所在的文件夹下。这个m文件可谓花了我不少的时间和精力。最后根据m文件的不足(不能将图形输入到excel文档当中),进一步弥补这不足,就有了exlink(也叫excel link),在网上搜索了相关的知识,发现很多关于exlink 的培训,觉得实在可笑,所以就将exlink的使用写的比较详细,以供读者自行分析体会。关键字:MATLAB excel exlink 接口 一、前沿 MATLAB是一款应用在各个领域的数学软件,最初叫做矩阵实验室,专用于矩阵的运算,后来的版本再各个领域都得到了很好的应用,比如:通信、电力电子、电机控制、运动控制、计算机控制、自动控制,DSP数字信号处理。但是MATLAB对于数据的处理与可视化是很多软件所不能及的。 EXCEL作为办公必备软件,能对简单数据分析计算与作图分析,但是处理复杂数据显得力不从心,比如三维作图就无法利用EXCEL作出;EXCEL本身的函数远远没有MATLAB 多,MATLAB作为数据有其独特的优势,集成了很多数学函数,包括数据拟合差值等。MATLAB 可以从EXCEL中读取数据,经过相关运算之后又可以将数据写入EXCEL,假如需要重复性的对excel可以利用MATLAB编写函数,每次只要运行MATLAB程序就可以完成,大大节省时间和精力。 另外,MATLAB还有与EXCEL的接口,叫做EXLINK,运用这个接口可以在excel中完成MATLAB函数的调用,还能传送数据给MATLAB,从MATLAB当中读取数据,从MATLAB 当中读取图形,使用方便,操作简单。 二、基于MATLAB的数据分析 数据分析操作流程主要分为三步:第一步,从excel中读取数据;第二部:利用MATLAB 大量函数对数据分析处理;第三步:将分析结果写入excel中。在整个过程中,不需要打开excel软件,操作十分方便,每次操作唯一要做就是修改excel所在的目录及文件名。主要函数如下(具体使用方法可在MATLAB命令窗口输入help +函数名查看):Xlsread 从excel中读数据 Xlswrite 向excel中邪数据 num2str 将数字转换为字符串 strncmp 字符串比较 polyfit 数据拟合 polyval 具体数值代入求值 plot 作图

数值分析五个题目的C语言及Matlab程序

本文档包含上一个文档中的五个数值分析实验题C语言程序及Matlab程序实验一 C程序 #include "stdio.h" #include "math.h" void main() { inti=0; float a=0.1,b=1.9,t=0.0,e=1.9; if((pow(a,7)-28*pow(a,4)+14)*(pow(b,7)-28*pow(b,4)+14)<0) if((7*pow(x,6)-112*pow(x,3))) printf("x=%f,i=%d,e=%f\n",x,i,e); for(i=1;i<7&&e>0.00001;i++) { t=x; x=x-(pow(x,7)-28*pow(x,4)+14)/(7*pow(x,6)-112*pow(x,3)); e=fabs(t-x); printf("x=%f,i=%d,e=%f\n",x,i,e);

} } Matable 程序 i=0; x=1.9;t=0.0;e=1.9; disp(['i=',num2str(i),' ','x=',num2str(x),' ','e=',num2str(e)]); for i=1:7 t=x; x=x-(x^7-28*x^4+14)/(7*x^6-112*x^3); e=abs(t-x); disp(['i=',num2str(i),' ','x=',num2str(x),' ','e=',num2str(e)]); if e<0.00001 break; end end 实验二 C程序 #include"stdio.h" #include"math.h" //已知量 double x[10]={1,2,3,4,5,6,7,8,9,10};

基于MATLAB的数据实时采集与处理的实现_梁湘

0.引言 MATLAB/SIMULINK是现在流行的仿真软件。MATLAB集数学计算结果可视化和编程于一体,能够方便地进行科学计算和大量工程运算的数学软件;SIMULINK是MATLAB的常用组件,它是基于MATLAB的语言环境下实现动态装置建模,仿真和分析的一个集成环境,支持连续、离散及两者混合的线性和非线性装置,也支持具有多种采样速率的多速率装置,被广泛的用于控制系统设计和系统仿真等诸多领域。但是MATLAB不能直接对硬件进行读写操作,从而影响了在控制系统仿真上的应用范围。MATLAB提供了众多外部函数接口,本文从中选择MEX文件接口作为MATLAB对外界进行读写的通道,首先对USBCAN接口卡进行设计,接下来以这个接口卡为通道,实现了MATLAB对于硬件的访问。 1.USB-CAN转接卡的设计 首先对于USBCAN转接卡进行设计,以便于设计出的转接卡能作为通信通道,让MATLAB能够通过USBCAN转换模块采集CAN总线上的数据,然后进行仿真。 在基于CAN总线的控制系统中,作为下层网络的CAN总线与计算机之间的通信以往是通过基于RS232接口、PC机上的ISA总线和PCI总线的通信适配卡来完成的。这些种类的转接卡有传输速率较慢,设计复杂和不便于扩展等缺点。 本课题设计的CAN-USB转接卡的功能是:采集CAN总线上的数据,通过USB总线和上位控制站之间进行数据传输。在通讯方面,一方面要满足CAN的协议标准,实现开放性,互操作性,在高速通信的情况下做到拥有较好的抗干扰性能;另一方面,转接卡兼容USB1.1总线,转接卡可以通过USB连接到PC机。其主要设计参数如下:数据传输速率:波特率在5Kbit/s~1Mbit/s范围内: USB总线标准:满足USB1.1协议的标准USB设备A/B插座 CAN总线接口:DB9针型插座,符合DeviceNET和CANopen标准CAN协议:支持CAN2.0B协议(兼容CAN2.0A协议) 供电方式:USB总线供电(+5V)或者使用外接电源(+9V~+25V,400mA) 运行环境:WindowsXP 转接卡的方案设计的思想是在已经存在的CAN总线网络中增加一个数据采集节点,用来采集各个节点发来的的数据,再通过USB总线上传到PC机,进行分析过和存储等操作。设计的具体实现是采用单片机通过控制USB控制芯片,与PC机进行通信,从PC机得到采集数据的指令和向PC机上传数据。同时,因为USB总线速度较快,并且是要从CAN网络读取数据分析,所以单片机通过不同的片选信号控制两个CAN控制芯片,分别能够从两路CAN网络上采集数据,和将从PC机得到的数据通过两个CAN控制芯片分别发送出去。所设计的系统结构如下图1所表示: 两路CAN CAN总线 USB协议具有1.1和2.0两个版本。从MATLAB对数据进行读写出发,并且处于CAN总线所能提供的速率限制,USB协议1.1版本已经能满足我们所需要的性能要求。USB1.1提供两种数据传输速率,低速传输为1.5Mbps,全速传输为12Mbps,并支持所有USB的特性,如热插拔、具有统一的设备标准以及可以连接多个设备等。CAN总线目前有CAN协议2.0A和CAN协议2.0B两个版本。本次设计所选用的单片机和CAN网络控制芯片均可支持CAN协议2.0A和CAN协议2.0B两个版本。 图1USBCAN转接卡的总体设计 本设计选用89CS52作为单片机来对CAN控制芯片和USB控制芯片操作。89CS52是ATMEL公司生产的低电压,高性能的单片机,兼容80C51构架。选择SJA1000做CAN总线控制芯片。这款芯片是一个由飞利浦公司生产的独立的CAN控制器,它在汽车和普通的工业应用上都具有较为先进的特征。它能适合多种应用,特别是在系统优化、诊断和维护方面,并且能和支持80C51构架的单片机兼容。选择PCA82C250作为CAN总线接口芯片,这款芯片专为CAN总线进行差分通信而设计。 根据设计要求,USBCAN转接卡应该直接能与PC机相连接,再与CAN总线进行通信。对比USB协议三层设备:主机(HOST),集线器(HUB)和设备(NODE),PC机作为主机,USBCAN转接卡是作为最下面一个级别:设备(NODE),只需要与其相连而不需要再作为HUB接入其它USB设备。所以需要挑选的是能够在充当设备(NODE)的芯片,这款芯片应该可以与51系列单片机相连通,并且支持USB协议1.1版本。市场上此类控制芯片主要有两种,一种是将单片机(MCU)集成到USB芯片上,代表如EZ-USBFX2;另一种是纯粹的USB接口芯片,如PDIUSBD12。考虑到前文提出的设计指标等因素,本文选择了飞利浦公司的PDIUSBD12芯片。PDIUSBD12是一款性价比很高的USB器件,广泛的采用与许多PC机的外设。 硬件设计完成后,对于固化在单片机ROM中的程序进行设计。单片机ROM中的程序主要采用中断驱动。它将USB总线和CAN总线上的数据请求都当作中断处理,在相应的中断处理程序中再将所采集到的数据转发到另外一个总线。 最后对于转接卡的驱动程序进行设计。驱动程序采用Windows体系下WDM驱动程序模型。在这种模型下,对于USB设备来说,驱动程序可以分为USB底层驱动程序和USB功能驱动程序。USB底层驱动程序在实际运行中对实际硬件进行操作,实现了复杂的底层通信;USB功能驱动程序则一般由设备开发者编写,逻辑位置位于USB底 基于MATLAB的数据实时采集与处理的实现 梁湘 (同济大学机械工程学院中国上海200092) 【摘要】本文的利用USB与CAN两种技术的优点设计了通信转接卡,提高整个网络的通信质量。接下来,采用该转接卡作为MATLAB与SIMULINK环境下实时仿真的通信转接卡,进行MATLAB环境下对CAN总线数据的实时采集、处理与仿真功能,完成MATLAB与SIMULINK下对控制系统的仿真和实时控制,为类似的通信转接卡的研究提供一定的参考。 【关键词】USB-CAN转接卡;半实物平台;MATLAB;SIMULINK TheRealizationofReal-timeReadingandWritinginMATLAB LiangXiang (SchoolofMechanicalEngineering,TongjiUniversity,Shanghai200092) 【Abstract】ThepapertakesadvantageofCAN-busandUSB-bustodesignUSBCANadapter.Theadapterimprovesthequalityofnetwork’scommunication.Following,thepapertakesUSBCANadapterasachannelwithwhichMATLABcancollectdatafromCAN-bus.Inthisway,MATLABcancollect,handleandsimulatedatainreal time.

数值计算方法matlab程序

function [x0,k]=bisect1(fun1,a,b,ep) if nargin<4 ep=1e-5; end fa=feval(fun1,a); fb=feval(fun1,b); if fa*fb>0 x0=[fa,fb]; k=0; return; end k=1; while abs(b-a)/2>ep x=(a+b)/2; fx=feval(fun1,x); if fx*fa<0 b=x; fb=fx; else a=x; fa=fx; k=k+1; end end x0=(a+b)/2; >> fun1=inline('x^3-x-1'); >> [x0,k]=bisect1(fun1,1.3,1.4,1e-4) x0 = 1.3247 k = 7 >> 简单迭代法 function [x0,k]=iterate1(fun1,x0,ep,N) if nargin<4 N=500; end if nargin<3 ep=1e-5; end x=x0; x0=x+2*ep;

while abs(x-x0)>ep & k> fun1=inline('(x+1)^(1/3)'); >> [x0,k]=iterate1(fun1,1.5) x0 = 1.3247 k = 7 >> fun1=inline('x^3-1'); >> [x0,k]=iterate1(fun1,1.5) x0 = Inf k = 9 >> Steffesen加速迭代(简单迭代法的加速)function [x0,k]=steffesen1(fun1,x0,ep,N) if nargin<4 N=500; end if nargin<3 ep=1e-5; end x=x0; x0=x+2*ep; k=0; while abs(x-x0)>ep & k

数值分析重要算法的matlab程序

数值分析重要算法的matlab程序 插值多项式:拉格朗日插值 function yh=lagrange(x,y,xh) n=length(x); m=length(xh); yh=zeros(1,m); c1=ones(n-1,1); c2=ones(1,m); for i=1:n xp=x([1:i-1 i+1:n]); yh=yh+y(i)*prod((c1*xh-xp'*c2)./(x(i)-xp'*c2)); end 插值多项式:牛顿插值(以数值实验3.2)为例 function y=ex32 n = 21; x = linspace(-5,5,n)'; h = (5-(-5))/(n-1); y = 1./(1+x.^2); % form the differences table for j = 2:n, y(1:n+1-j,j) = diff(y(1:n+2-j,j-1))./(x(j:n)-x(1:n+1-j)); end % newton coeff y = y(1,:); pz = [ ]; v = linspace(-5,5,80); for t = v, z = y(n); for j = n-1:-1:1, z = z * (t-x(j))+y(j); end pz=[pz z]; end plot(v,pz,'r+-',v,1./(1+v.^2),'g--'); 数值积分:梯形求积公式求积分 function I=ftrapz(fun,a,b,n) h=(b-a)/n; x=linspace(a,b,n+1); y=feval(fun,x); I=h*(0.5*y(1)+sum(y(2:n))+0.5*y(n+1)); 数值积分:抛物型求积公式求积分 function I=fsimpsion(fun,a,b,n) h=(b-a)/n; x=linspace(a,b,2*n+1); y=feval(fun,x); I=(h/6)*(y(1)+2*sum(y(3:2:2*n-1))+4*sum(y(2:2:2*n))+y(2*n+1)); 追赶法解三对角方程组

MATLAB 主成分数据处理

第11章 主成分 主成分分析(principal component Analysis )又称主分量分析,是由皮尔逊 (pearson )于1901年首先引入,后来由霍特林(hotelling )于1933年进行了发展。主成分分析是一种通过降维技术把多个变量化为少数几个主成分(即综合变量)的多元统计方法,这些主成分能够反映原始变量的大部分信息,通常表示为原始变量的线性组合,为使得这些主成分所包含的信息互不重叠,要求各主成分之间互不相关。主成分分析在很多领域有着广泛的应用,一般来说,当研究的问题涉及很多变量,并且变量间相关性明显,即包含的信息有所重叠时,可以考虑用主成分分析的方法,这样容易抓住事物的主要矛盾,使得问题得到简化。 本章主要内容包括:主成分分析的理论简介,主成分分析的MATLAB 实现,主成分分析的主要具体案例。 11.1主成分分析简介 11.1.1主成分分析的几何意义 假设从二元总体 12(,)'x x x =中抽取容量为n 的样本,绘出样本观测值的散点图,如图11-1所 示。从图上可以看出,散点大致分布在一个椭圆内1x 与2x 呈现出明显的线性相关。这n 个样品 在 1x 轴方向和2x 方向具有相似的离散度,离散度可以用1x 和2x 包含了近视相等的信息量,丢掉其中任意一个变量,都会损失比较多的信息。图11-1中坐标按逆时针旋转一个角度θ,使得 1x 轴旋转到椭圆的长轴方向1y ,2x 轴旋转到椭圆的短轴2y ,则有 112212cos sin sin cos y x x y x x θθθθ =+?? =-+? (11.1) 此时可以看到,n 个点在新坐标系下的坐标1y 和2y 几乎不相关,并且1y 的方差要比2y 的方 差大得多,也就是说1 y 包含了原始数据中大部分的信息,此时丢掉变量 2y ,信息的损失是比较 小的。这里称 1y 为第一主成分2y 为第二主成分。 主成分分析的过程其实就是坐标系旋转的过程,新坐标系的各个坐标系的轴的方向是原始数据变差最大的方向,各主成分表达式就是新旧坐标转换关系式。 11.1.2 总体的主成分 1从总体协方差矩阵出发求解主成分 设 ' (,,,) p x x x x = 为一个p 维总体,假定 x 期望和协方差矩阵均存在并已知,记 ()E x μ =,var() x =∑ ,考虑如下线性变换

matlab数值计算(diedai)

Gauss_Seidel迭代法的Matlab程序 function [x]=Gauss_Seidel_iterative(A,b) % 用Gauss_Seidel迭代求解线性方程组,矩阵A是方阵 x0=zeros(1,length(b)); % 赋初值 tol=10^(-2); % 给定误差界 N=1000; % 给定最大迭代次数 [n,n]=size(A); % 确定矩阵A的阶 k=1; % 迭代过程 while k<=N x(1)=(b(1)-A(1,2:n)*x0(2:n)')/A(1,1); for i=2:n x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)'-A(i,i+1:n)*x0(i+1:n)')... /A(i,i); end if max(abs(x-x0))<=tol fid = fopen('G_S_iter_result.txt', 'wt'); fprintf(fid,'\n********用Gauss_Seidel迭代求解线性方程组的输出结果********\n\n'); fprintf(fid,'迭代次数: %d次\n\n',k); fprintf(fid,'x的值\n\n'); fprintf(fid, '%12.8f \n', x); break; end k=k+1; x0=x; end if k==N+1 fid = fopen('G_S_iter_result.txt', 'wt'); fprintf(fid,'\n********用Gauss_Seidel迭代求解线性方程组的输出结果********\n\n'); fprintf(fid,'迭代次数: %d次\n\n',k);

matlab入门经典教程--第四章 数值计算

第四章数值计算 4.1引言 本章将花较大的篇幅讨论若干常见数值计算问题:线性分析、一元和多元函数分析、微积分、数据分析、以及常微分方程(初值和边值问题)求解等。但与一般数值计算教科书不同,本章的讨论重点是:如何利用现有的世界顶级数值计算资源MATLAB。至于数学描述,本章将遵循“最低限度自封闭”的原则处理,以最简明的方式阐述理论数学、数值数学和MATLAB计算指令之间的在联系及区别。 对于那些熟悉其他高级语言(如FORTRAN,Pascal,C++)的读者来说,通过本章,MATLAB 卓越的数组处理能力、浩瀚而灵活的M函数指令、丰富而友善的图形显示指令将使他们体验到解题视野的豁然开朗,感受到摆脱烦琐编程后的眉眼舒展。 对于那些经过大学基本数学教程的读者来说,通过本章,MATLAB精良完善的计算指令,自然易读的程序将使他们感悟“教程”数学的基础地位和局限性,看到从“理想化”简单算例通向科学研究和工程设计实际问题的一条途径。 对于那些熟悉MATLAB基本指令的读者来说,通过本章,围绕基本数值问题展开的容将使他们体会到各别指令的运用场合和在关系,获得综合运用不同指令解决具体问题的思路和借鉴。 由于MATLAB的基本运算单元是数组,所以本章容将从矩阵分析、线性代数的数值计算开始。然后再介绍函数零点、极值的求取,数值微积分,数理统计和分析,拟合和插值,Fourier分析,和一般常微分方程初值、边值问题。本章的最后讨论稀疏矩阵的处理,因为这只有在大型问题中,才须特别处理。 从总体上讲,本章各节之间没有依从关系,即读者没有必要从头到尾系统阅读本章容。读者完全可以根据需要阅读有关节次。除特别说明外,每节中的例题指令是独立完整的,因此读者可以很容易地在自己机器上实践。 MATLAB从5.3版升级到6.x版后,本章容的变化如下: ●MATLAB从6.0版起,其矩阵和特征值计算指令不再以LINPACK和EISPACK库为基础, 而建筑在计算速度更快、运行更可靠的LAPACK和ARPACK程序库的新基础上。因此,虽然各种矩阵计算指令没有变化,但计算结果却可能有某些不同。这尤其突出地表现在涉及矩阵分解、特征向量、奇异向量等的计算结果上。对此,用户不必诧异,因为构成空间的基向量时不唯一的,且新版的更可信。本书新版全部算例结果是在6.x版上给出的。 ●在5.3版本中,泛函指令对被处理函数的调用是借助函数名字符串进行的。这种调用 方式在6.x版中已被宣布为“过渡期允许使用但即将被淘汰的调用方式”;而新的调用方式是借助“函数句柄”进行的。因此,关于述泛函指令,本章新版着重讲述如何使用“函数句柄”,同时兼顾“函数名字符串”调用法。 ●MATLAB从6.0版起,提供了一组专门求微分方程“边值问题”数值解的指令。适应这 种变化,本章新增第4.14.5节,用2个算例阐述求解细节。 ● 5.3版中的积分指令quad8已经废止;6.x版启用新积分指令quad l;6.5版新增三重 积分指令triplequad。本章新版对此作了相应的改变。 4.2LU分解和恰定方程组的解

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