文档库 最新最全的文档下载
当前位置:文档库 › matlab在化工研究中的应用

matlab在化工研究中的应用

matlab在化工研究中的应用
matlab在化工研究中的应用

MATLAB程序设计大作业

题目: matlab在化工研究中的应用

学院:化学工程学院

专业:化学工艺

学号: 2012200440 学生姓名:任少阳

开设课程: matlab程序设计与应用

Matlab在化工研究中的应用

1 概述

在化工设计与分析、过程研究与开发、系统工程、模拟预测、优化和控制领域,通常要化工过程模拟化,用于尚未建立的或已建立的过程,既可用于过程的研究、开发和设计,也可用于评估及其运转情况、控制和改进。化工模拟关必须要建立数学模型,就是以质量平衡、热量平衡和动量平衡为基础并结合反应动力学而建立的模型方程式。

MATLAB是美国Math Works公司于80年代中期推出的一套高性能的数值计算和可视化软件。经过Math Works 公司的不断完善,MATLAB已经成为自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等领域的最常用的和最受欢迎的软件。MATLAB具有强大的扩展功能,使其在很多领域都能充分发挥其强大的作用。因此人们将MATLAB称之为继FORTRAN和C等高级语言之后的第四代计算机语言,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB是一种解释性语言,采用了工程技术的计算语言,几乎与数学表达方式相同,语言中的基本元素为矩阵,它提供了各种矩阵的运算和操作,并且具有符号计算、数字和文字统一处理、离线和在线计算功能;具有较强的绘图功能,计算结果和编程可视化;具有很强的开放性,针对不同的应用学科,都带有相应的可开发工具箱。自20世纪70年代晚期,cleve Moler基于uNPACK 和EISPAC K软件包的部分函数,用Fortran开发设计MATLAB初始版本以来,经过近30年的不断完善,由原来含有80个函数的矩阵计算工具?,发展到包含89个不同应用工具箱和功能模块,国内对MATLAB的应用研究,最早为张文乐等,而在化学化工领域的应用研究起步较晚,任佩林等首先用MAlAB编程计算换热管固有频率的传递矩阵。

随着化学工业以及计算机技术的发展,通过建立过程机理模型并通过计算机数值模拟,以便对化工过程进行设计和分析、模型预测、优化和控制等。现阶段,可以用于数值计算的编程语言有Visual Basic 6.0 、Compac Visual Fortan 6.5 、VisualC++和C++builder、MATLAB。尽管Fortran和C/C++程序执行效率很高,可以充分利用现有的代码资源,如Numerical Recipes和IMSL库,又可提高运行速度,并且可以生成具有标准用户界面的应用软件,但是在数值方面使

用MATLAB语言编程更具有优势,因为Fortran和C/C++语言的内部函数、Numerical Recipes和IMSL库的算法函数都比较有限,且对编程能力要求较高,编程效率较低,而MATLAB得算法齐全,计算功能、图形可视化功能和符号运算都十分强大,也支持其他面向对象的高级语言的混合编程;所以,MATLAB作为一种方便、快捷的科学和工程计算语言,具有Fortran和C/C++等程序无法比拟的优越性。

国内对MATLAB的应用研究,最早为张文乐等,而在化学化工领域的应用研究起步较晚,任佩林等首先用MATLAB编程计算换热管固有频率的传递矩阵。

本文首先讨论MATLAB发展简史及其特点,而后综述近十年来,国内化学化工领域的应用情况,从它与其它语言的混合编程、与其它软件的集成、工具箱的开发与应用等方面等,并就以后如何应用提出建议。

2 MATLAB在化工研究中的应用

2 .1 与Delphi的混合编程

由于MATLAB是一种解释性的语言,运行效率低,并且在其环境下开发,应用程序大都不能脱离其运行环境。利用其它强大语言的功能,则可以弥补其处理问题时的缺陷,充分发挥各自的优势。

杨敏等以MATLAB为自动化服务器,以Delphi语言编写的程序为自动化控制器,并通过Delphi的0LE variant类型引用MATLAB的神经网络工具箱类型库,达到MATLAB和Delphi混合编程的目的,实现了炼钢过程氧化期终态的准确预报,并提供详细源代码及说明。

2. 2 与Visual Basic的混合编程

付孝锦等引充分利用Visual Basic的界面设计功能和MATLAB的强大计算功能,通过在VB中调用MAILAB的Active x的方法,开发了化学反应方程式配平软件。张云鹏等针对VB数值计算和图形处理能力不足,结合MATLAB的Matrix VB 数学函数库,设计出大学化学实验数据处理系统。在数值计算和图形处理方面效果良好。

2. 3 与c/C++的混合编程

赵立杰等为了检测和诊断聚氯乙烯的生产过程,在原有软、硬件基础S上,采用C,VB和MATLAB语言混合编程,基于最小窗口MPCA非线性多模型建模和监

视方法,设计出用于挖掘数据中的潜在信息,解决批次过程在线监视和诊断问题的软件。实际应用于某化工过程,能早期预报和诊断异常情况,为监视和评价过程性能提供可靠的依据,提高过程操作的安全性。

3.1 MATLAB在化工计算上的应用

化学工程中的计算问题一般比较复杂,其操作的数据对象通常是数组,具体计算涉及插值、求积分、参数拟合、解常微分和偏微分方程、解线性和非线性方程等。解这些问题的一般做法是:首先编写或查找相应的FORTRAN、C和BASIC 等传统的计算语言具有一定的编程能力,调试过程中花费很多时间和精力。3.1.1 非线性最小二乘拟合

用非线性最小二乘法从实验的二元物系气液平衡实验数据拟合Wilson方程参数。温度:t=60℃,物系:甲醇(1)、水(2)。实验数据见下表1。

表1 甲醇——水等温实验数据

液相组成x1mol气相组成y1mol总压mmHg

0.0343 0.2106 183.64

0.0446 0.2690 196.92

0.0594 0.3312 211.65

0.0793 0.3920 228.70

0.1093 0.4714 254.75

0.1634 0.5698 291.74

0.1961 0.5989 309.60

0.2705 0.6699 353.18

0.3670 0.7462 395.79

0.4619 0.7889 431.10

05665 0.8223 466.95

0.7582 0.9010 538.25

查得Antonie常数见表2。

表2 甲醇——水Antonie常数

常数

甲醇 水 C1

7.87863 8.10765 C2

1473.11 1750.268 C3

230.0 235.0

解:由吉布斯自由能和活度系数知识推得,在对恒温下二元物系实验数据的拟合中,可用式(1)-式(4)中的式(4)作为目标函数。

(G E /(RT))实验=x 1*ln γ

1实验+x 2*ln γ2实验 (1) (G E /(RT))计算=x 1*ln γ1计算+x 2*ln γ2计算 (2)

(G E /(RT))实验- G E /(RT))计算= x 1*[ ln γ

1实验+ln(x 1+Λ12* x 2)]+ x 2*[ ln γ2实验+ln(x 2+Λ21* x 1)] (3) F1=1m j =∑{ x 1*[ ln γ

1实验+ ln(x 1+Λ12* x 2)]+ x 2*[ ln γ2实验+ln(x 2+Λ21* x 1)]}2 (4)

在求解ln γ1实验和ln γ2实验 时 可将实验数据x1,y1,p 的数组当作变量看待,即将

x1=[0.0343 0.0446 0.0594 0.0793 0.1093 0.1634 0.1961 0.2705 0.3670 0.4619 0.5665 0.7582]整体当作变量看待。

由平衡常数公式K i =γi Pis/P 得,γi =K i P/Pis ,所以,可以计算得到

γ1实验=[1.7914 1.8933 1.9749 1.7961 1.7456 1.6163 1.5022 1.3896 1.2785 11698 1.0769 1.0162]

γ2实验=[1.0043 1.0068 1.0069 1.0104 1.0115 1.0037 1.0335 1.0692 1.0617 1.1315

1.2807 1.4744]

在进行拟合Λ12和Λ21时,只要将目标函数式(4)编写成函数文件,再调用

LEASTSQ 这个最小拟合函数,即得到结果Λ

12=0.6734,Λ21=1.0845。 3.1.2 解非线性方程(组)

例:简单蒸馏时,某时刻釜残液量与低沸点组分x 之间有如下的关系式: lnF 0/F=1/(α-1)[ln(x 0/x)+αln(1-x)/(1-x 0)],对于苯—甲苯物系,相对挥发度α=2.5,开始时物系中含苯60%,含甲苯40%。若蒸馏至原加料量的一半时,试求残液中苯的含量。

解:按题意将数值代入方程,得:

2.5ln(1-x)-ln(x)+0.7402=0

运用MATLAB的函数运算功能将方程写为

f=?2.5*log(1-x)-log(x)+?0.7402

并调用SOLVE函数求得此方程的精确解为x=0.4565077

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

化学工程与工艺专业实验是初步了解、学习和掌握化学工程与工艺科学实验研究方法的一个重要的实践性环节。专业实验不同于基础实验,其目的不仅仅是为了验证一个原理、观察一种现象或是寻求一个普遍适用的规律,而应当是为了有针对性地解决一个具有明确工业背景的化学工程与工艺问题。化工实验的特点流程较长,规模较大,数据处理也较为复杂。因此依靠计算机处理数据会使繁琐的数据处理过程变得简单快捷,大大提高工作效率。数据处理是每一个化学工程实验必不可少的步骤,也是至关重要的一个步骤。通过实验可以建立过程模型、分析工艺技术的可行条件。但是化工实验数据的处理往往并不是那么简单,它需要通过复杂的数学计算,若仅仅依靠手工计算则需要花费大量的时间,而且化工实验数据的处理量很大、重现性很高,因此应用计算机来处理实验数据可以大大提高工作效率。化学工程与工艺专业是一个以实验为基础的专业学科。实验的目的是通过有限的实验点去寻找某一对象或某一过程中各参数之间的定量关系,从而揭示某化工过程所遵循的客观规律。由于人力、物力、时间等条件的限制,任何实验所能完成的实验点都是有限的,如何根据这些有限的实验点归纳出各参数之间的关系,便是实验数据的处理问题。由于化工过程的复杂性,实验过程中各参数之间的关系往往是非线性的,数据处理或数据拟合的工作量往往比较大,且计算过程也比较繁琐。若能利用计算机进行数据处理,不仅处理结果的准确度很高,而且还会省下很多不必浪费的人力和时间,大大提高了工作效率。

3.2.1 处理实验数据的程序

由于化工实验有很多,而且每一个实验数据的处理的步骤、公式都不一样,所以很难用一个程序来描述。但是,每一个实验都有类似之处,因此每一个程序都可以用下图描述:

3.2.1.1 数据的输入

数据的输入是利用提示输入函数input来实现的,具体的方式是(以输入温度为例):t—input(‘请输入工作温度(摄氏度):‘);而程序中所用到的数组则都是以矩阵的形式输入。

3.2.1.2数据处理与作图

在科学研究与工程实践中,常常测量得到许多离散的实验数据和工业数据,这些数据通常需要经过各种拟合方法以得到连续光滑的曲线。其中,最常用的就是最小二乘法曲线拟合。

4 化工计算的应用

4.1 数值积分

(1) 数值积分基本原理

求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)?法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。它们的基本思想都是将整个积分区间[a,b]分成n个子区间[x i,x i+1],i=1,2,…,n,其中x1=a,x n+1=b。这样求定积分问题就分解为求和问题。

10 变步长辛普生法

基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为:[I,n]=quad('fname',a,b,tol,trace)

其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。

20 牛顿-柯特斯法

基于牛顿-柯特斯法,MATLAB给出了quad8函数来求定积分。该函数的调用格式为:[I,n]=quad8('fname',a,b,tol,trace)

其中参数的含义和quad函数相似,只是tol的缺省值取10-6。?该函数可以更精确地求出定积分的值,且一般情况下函数调用的步数明显小于quad函数,从而保证能以更高的效率求出所需的定积分值。

30 被积函数由一个表格定义

在MATLAB中,对由表格形式定义的函数关系的求定积分问题用trapz(X,Y)函数。其中向量X,Y定义函数关系Y=f(X)。

(2) 二重定积分的数值求解

使用MATLAB提供的dblquad函数就可以直接求出上述二重定积分的数值解。该函数的调用格式为:I=dblquad(f,a,b,c,d,tol,trace)

该函数求f(x,y)在[a,b]×[c,d]区域上的二重定积分。参数tol,trace的用法函数quad 完全相同。

4. 2 数值微分

在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff,其调用格式为:

DX=diff(X):计算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,…,n-1。

DX=diff(X,n):计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X))。

DX=diff(A,n,dim):计算矩阵A的n阶差分,dim=1时(缺省状态),按列计算差分;dim=2,按行计算差分。

4.3 方程组求解

(1)线性方程组求解

10.利用左除运算符的直接解法

对于线性方程组Ax=b,可以利用左除运算符“\”求解:x=A\b

20.利用矩阵的分解求解线性方程组

矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解、QR分解、Cholesky分解,以及Schur分解、

Hessenberg分解、奇异分解等。

30. 迭代解法

迭代解法非常适合求解大型系数矩阵的方程组。在数值分析中,迭代解法主要包括Jacobi迭代法、Gauss-Serdel迭代法、超松弛迭代法和两步迭代法。

(2) 单变量非线性方程求解

在MATLAB中提供了一个fzero函数,可以用来求单变量非线性方程的根。该函数的调用格式为:z=fzero('fname',x0,tol,trace)

其中fname是待求根的函数文件名,x0为搜索的起点。一个函数可能有多个根,但fzero函数只给出离x0最近的那个根。tol控制结果的相对精度,缺省时取tol=eps,trace?指定迭代信息是否在运算中显示,为1时显示,为0时不显示,缺省时取trace=0。

(3) 非线性方程组的求解

对于非线性方程组F(X)=0,用fsolve函数求其数值解。fsolve函数的调用格式为:X=fsolve('fun',X0,option)

其中X为返回的解,fun是用于定义需求解的非线性方程组的函数文件名,X0是求根过程的初值,option为最优化工具箱的选项设定。最优化工具箱提供了20多个选项,用户可以使用optimset命令将它们显示出来。如果想改变其中某个选项,则可以调用optimset()函数来完成。例如,Display选项决定函数调用时中间结果的显示方式,其中…off?为不显示,…iter?表示每步都显示,…final?只显示最终结果。optimset(…Display?,…off?)将设定Display选项为…off?。

5 小结

在化学工程与工艺实验中用Matlab软件处理实验数据是很有必要的。每一次实验都有大量的数据要处理,我们只要处理自己的原始数据,但教师在批改时就要把我们所有的实验数据都要计算,这个工作量是很大的。有了数据处理程序,教师只需要输入原始数据,运行程序后,就可了解学生的实验是否做得好、实验数据处理结果是否准确,这就可以节省很多的时间。在实际工程中,需要处理的数据更多,计算公式更加复杂,有时为了导出计算公式,还需要建立复杂的数学模型,手工计算基本是不可能完成的。因此,把Matlab软件应用到化学工程与工

艺实验中进行实验数据的处理是十分必要的。

MATIAB在国内化学化工领域的应用研究起步较晚,大多集中在计算、模拟以及化学信息学方面,且处于探索阶段,随着应用研究的深入,除继续在计算、模拟等方面的应用外,在以下方面的应用研究有待加强:

(1)在以前工作的基础上,在解决化工过程的设计、反应器的设计、化工生产的调度、产品设计、配方设计以及产品的配送等问题上能够发挥作用。

(2)综合利用各种丁具箱,如将数据库工具箱和统计工具箱结合使用,处理海量的化合物数据更有效,揭示蕴含的规律。

(3)结合MATIAB强大的计算与其它高级语言设计的灵活性,编制出能够脱离MATLAB环境的化学、化工计算、模拟以及教学的专用软件,克服MATIAB语言的解释性,速度慢,且离不开MATIAB环境,随着MATLAB的发展,对系统的要求越来越高,价格越来越昂贵,如何才有利于在同内推广。

(4) MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,应用于化工领域的“三传一反”的计算,包在化工管路设计型计算,工艺设计计算、化工热力学以及模拟和优化化工各种的实验及工艺流程。在化工计算较其它高级编程语言,MATLAB有很多优点,其编程语言规则简单,所提供的操作和功能函数指令就是一些简单的英文单词,容易掌握使用。MATL AB在国内化学化工领域的应用研究起步较晚,大多集中在计算、模拟以及化学信息学方而,且处于探索阶段,随着应用研究的深入,在以前工作的基础上,在解决化工过程的设计等问题开发新一代化工领域的工具箱,与其它高级语言设计结合,编制出功能强大,专业性更强的工业设计、实验模拟优化以及教学的专用软件,克服MATIAB语言的局限性,更好推广应用MATLAB基础上开发的化工软件。

【含源代码】北邮dsp-MATLAB实验三梳状滤波器的应用

Dsp-matlab实验 实验三:梳状滤波器的应用 设 计 报 告 课题名称:梳状滤波器的应用 学生姓名: 班级: 班内序号: 学号: 日期:2015/06/15

目录 一、实验内容········································· 二、Matlab运行结果(含分析)································· 三、Matlab源代码···························· 四、遇到的难题与解决方法···························· 参考文献·························································

一、实验内容 录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。试验报告要求: 1、对试验原理的说明; 回声往往是原始声音衰减后的多个延迟叠加而组成的,因此回声可以用延迟单元来生成。X(n)表示原始声音信号,α为衰减系数,N为延迟周期,回声信号Y(n)=X(n)α*x(n-T)+α^2*x(n-2T)+……+α^N*x(n-NT). Z变换后的系统函数H(Z)可由梳状滤波器实现。MATLAB filter函数可用来仿真差分方程,本次实验用的就是这个函数。 2、在同一张图上,绘制原声音序列() x n、加入一次反射后的声音序列 1() x n、加入三次反射后的声音序列 3() x n和加入无穷多次反射后的声音序列() I x n;

其中蓝色为原声音序列x(n),粉红色为加入一次反射后的声音序列 x1(n),绿色为加入三次反射后的声音序列x3(n),红色为加入无穷多次反射后的声音序列x ∞(n)。 二、Matlab 运行结果(含分析)· 结合上述各序列,分析延时、衰减系数对回声效果的影响(提示:定量考察序列()x n 、1()x n 、3()x n 和()I x n 之间的区别) 延时不变时,衰减系数a 从零增大到1的过程中,回声效果由差变好再变差。a 很小时几乎听不到回声,a 在0.5±0.1时回声效果最明显,a 接近1时声音变得很不清晰,几乎不可识别。衰减系数不变时延时T 从零增大的过程中回声效果由差变好再变差。T 接近0时可以听到回声,但多次回声的层次感不清晰。0.1s1s 三、Matlab 源代码· >> [x,fs]=audioread('a.wav');sound(x,fs);a=0.6;T=0.2; y1=filter([1,zeros(1,T*fs-1),a],1,x);sound(y1,fs);wavwrite(y1,fs,'echo1.wav'); y2=filter([1,zeros(1,T*fs-1),a,zeros(1,T*fs-1),a^2,zeros(1,T*fs-1),a^3],1,x); sound(y2,fs);wavwrite(y2,fs,'echo2.wav');y3=filter(1,[1,zeros(1,T*fs-1),a],x);sound(y3,fs);wavwri te(y3,fs,'echo3.wav');plot(y3,'m'); hold on;plot(y2,'r'); hold on;plot(y1,'g');hold on;plot(x,'b'); 四、遇到的难题与解决办法 最开始遇到的问题是matlab 软件安装问题,因为电脑环境的特殊性尝试了多次才成功; 在建模过程中发现对实验原理因为学习时间过长有些不熟悉,于是翻书查阅复习,熟悉实验原理; 在实验过程中因为粗心,忘记保存,没有打符号等等之类问题使系统开始报错,细心调试之后成功建模

北邮dsp软件实验报告

Matlab仿真实验 实验报告 学院:电子工程学院 专业:电子信息科学与技术 班级: 学号: 姓名:

时间:2015年12月23日 实验一:数字信号的FFT分析 1.实验目的 通过本次试验,应该掌握: (a)用傅里叶变换进行信号分析时基本参数的选择 (b)经过离散时间傅里叶变换和有限长度离散傅里叶变换后信号频谱上的区别,前者DTFT时间域是离散信号,频率域还是连续的,而DFT在两个域中都是离散的。(c)离散傅里叶变化的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。(e)建立DFT从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用时数字音频压缩中的分析滤波器,例如DVD AC3和MPEG Audio。 2.实验容、要求及结果。 (1)离散信号的频谱分析: 设信号x(n)=0.001*cos(0.45n)+sin(0.3n)-cos(0.302n-) 此信号的0.3谱线相距很近,谱线0.45的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。 【实验代码】:

k=2000; n=[1:1:k]; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); subplot(2,1,1); stem(n,x,'.'); title(‘时域序列'); xlabel('n'); ylabel('x(n)'); xk=fft(x,k); w=2*pi/k*[0:1:k-1]; subplot(2,1,2); stem(w/pi,abs(xk)); axis([0 0.5 0 2]); title('1000点DFT'); xlabel('数字频率'); ylabel('|xk(k)|'); 【实验结果图】:

北邮Matlab实验报告概论

《数字信号处理》Matlab 实验 一.实现重叠相加和重叠保留算法,完成线性卷积的分段计算(可任意指定()x n 及()h n ); 1、 对算法的概括性说明; 1)重叠相加法 重叠相加法是将待过滤的信号分割成长为N 的若干段,每一段都可以和有限时宽单位取 样响应作卷积,再将过滤后的各段重叠相加。 具体算法实现:建立缓存序列,每次输 入N 点序列,通过计算x(n)和h(n) 的循环卷积实现线性卷积运算,将缓存的M-1点序 列和卷积结果相加,并输出前N 点作为计算结果,同时缓存后M-1点,如此循环,直至 所有分段计算完毕,则输出序列y(n)为最终计算结果。 2)重叠保留法 重叠保留法相当于将x l (n )和h(n )作循环卷积,然后找出循环卷积中相当于线性卷积的部 分。在这种情况下,将序列y(n)分为长为N 的若干段,每个输入段和前一段有M-1个重 叠点 。此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序 列y(n)。

2、源代码及流程图; 2.1 源代码: function[y] = overlap_add(x,h,N) M = length(h); if N

北邮数字信号处理Matlab仿真实验

《数字信号处理》Matlab 实验 一.离散信号的 FFT 分析 知识点:利用FFT 对信号频谱进行分析,用DFT 进行信号分析时基本参数的选择,以及信号经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT )后信号频谱上的区别。 实验教学内容: 1.用Matlab 编程上机练习。已知: N=25。这里Q=0.9+j0.3。可以推导出 , 首先根据这个式子计算X(k)的理论值,然后计算输入序列x(n)的32个值,再利用基2时间抽选的FFT 算法,计算x(n)的DFT X(k),与X(k)的理论值比较(要求计算结果最少6位有效数字)。 解: format long Q=0.9+0.3i; WN=exp(-2*pi*1i/32); Xk=(1-Q^32)./(1-Q*WN.^[0:24]); xn=Q.^[0:24]; Xkfft=fft(xn,32); for (k0=1:1:25) difference=Xk(k0)-Xkfft(k0); end; subplot(3,1,1);stem(abs(Xk(1:1:24)),'.');title('DFT x(n)');xlabel('k');axis([0,35,0,15]); subplot(3,1,2);stem(abs(Xkfft(1:1:32)),'g.');title('FFT x(n)');xlabel('k');axis([0,35,0,15]); subplot(3,1,3);stem(abs(difference(1:1:25)),'r.');title('Xk-Xkfft');xlabel('k');axis([0,35,0,15]); 0n N-1 ()0 n 0, n N n Q x n ?≤≤=? <≥?11,011)()()(k k 1 nk 1 -=--===∑∑-=-=N k QW Q QW W n x k X N N n N N n N N n ,

北邮DSP数字信号处理Matlab实验一

实验一:数字信号的产生和基本运算 (1) 常用数字信号序列的产生: 熟悉Matlab产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。请用Matlab画出下列序列的波形(-10

b)利用.m文件 M文件代码: function[x,n]=u(n0,n1,n2) if((n0=0; 实现2u(n-5)的命令是: >> x=2*u(5,-10,10); >> n=-10:10; >> stem(n,x) 图像为:

MATLAB实验报告北京邮电大学

Matlab实验报告 学院:信息与通信工程学院班级:201321113 学号:2013210381 班内序号:18 姓名:石雪原

实验题目1.实现重叠相加和重叠保留算法一.实验原理 重叠相加法和重叠保留法的实质都是以逐段地方式通过循环卷积来完成线性卷积的计算。将输入序列x(n)进行分段,每段长为N,且N≥M(M为有限长因果序列h(n)的长度),x(n)逐段与h(n)进行循环卷积,在重叠保留法中需在x(n)序列首部加入长度为M-1的0序列。 在算法中,在获得N个点的输入后,进行N+M-1点循环卷积计算,之后输出N个点。通过for循环逐段进行循环卷积,使用FFT和IFFT计算两个有限长序列的N点循环卷积结果。 二.源代码和流程图 重叠相加法代码 function [Y]=overpl(x,h,N) Lx=length(x); %序列长度 M=length(h); %h(n)长度 x=[x,zeros(1,N-1)]; t=zeros(1,M-1); Y=zeros(1,Lx+M-1); a=floor(Lx/N); for k=0:a A=x(k*N+1:k*N+N); y1=fft(A,Lx+M-1); %利用fft进行运算 y2=fft(h,Lx+M-1); y3=y1.*y2; q=ifft(y3,Lx+M-1); Y(k*N+1:k*N+M-1)=q(1:M-1)+t(1:M-1); Y(k*N+M:k*N+N)=q(M:N); t(1:M-1)=q(N+1:N+M-1); end Y(1:Lx+M-1);

对应流程图 图二 图一:每段利用fft和ifft实现循环卷积 图二:对x(n)逐段进行循环卷积然后相加得输出线性卷积结果y(n) 重叠保留法代码 function[Y]=overlpsav(x,h,N) Lx=length(x); M=length(h); M1=M -1; L=N-M1; h=[h,zeros(1,N-M)]; x=[zeros(1,M1),x,zeros(1,N-1)];

北邮Matlab仿真 实验

[键入公司名称] Matlab仿真实验 [键入文档副标题] 2010211201陈建文10210987 2012-12-10 实验报告主要内容是对3个实验的完成过程的介绍和总结

目录 数字信号的FFT分析 (2) DTMF信号的编码 (6) FIR数字滤波器的设计和实现 (10) 错误分析 (14) 经验总结 (15) 实验一:数字信号的FFT分析: 实验目的: (1)用傅立叶变换进行分析是基本参数的选择。 (2)经过离散时间傅立叶变换和有限长度离散傅立叶变换后信号频谱上的区别,前者DTMF时间域是离散信号,频率域还是连续的,而DFT在两个区域中都是离散的。 (3)离散傅立叶变换的基本原理、特性,以及经典的快速算法,体会快速算法的效率 (4)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时域分析的学习和研究大侠基础。 (5)建立DFT从整体上可看成是有窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如DVD AC3和 MPEG Audio。 实验内容和要求: (1)离散信号的频谱分析: 设信号 x(n)=0.001*cos(0.45n*pi)+sin(0.3n*pi)-cos(0.302n*pi-pi/4) 此信号的0.3pi和0.302pi的两根频谱线相距很近,谱线0.45pi的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。

(2)DTMF信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF)拨号数字0——9的数 据,采用快速傅立叶变换(FFT)分析这10个号码DTMF拨号是的频谱。 设计思路1: 只要将x(n)表达式敲入,再利用fft(x(n),N)函数进行傅立叶变换,之后再用subplot函数进行图形绘制,本题关键在于N的确定,只有合适的大小才能满足题目要求。 代码1: N = 1000; % Length of DFT n = [0:1:N-1]; xn = 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); Xk = fft(xn,N); xn1=0.001*cos(0.45*n*pi); Xk1 = fft(xn1,N); xn2=sin(0.3*n*pi); Xk2 = fft(xn2,N); xn3=-cos(0.302*n*pi-pi/4); Xk3 = fft(xn3,N); k=[0:1:N/2]; subplot(5,1,1);stem(k,abs(xn(1:1:(N/2+1))),'.');title('x(n)');xlabel( 'k');axis([140,240,0,4]); subplot(5,1,2);stem(k,abs(Xk(1:1:(N/2+1))),'r.');title('DFT 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi- pi/4)');xlabel('k');axis([140,240,0,4]); subplot(5,1,3);stem(k,abs(Xk1(1:1:(N/2+1))),'g.');title('DFpi)');xlab el('k');axis([140,240,0,4]); subplot(5,1,4);stem(k,abs(Xk2(1:1:(N/2+1))),'b');title('DFT sin(0.3*n*pi)');xlabel('k');axis([140,240,0,4]); subplot(5,1,5);stem(k,abs(Xk3(1:1:(N/2+1))));title('DFT - cos(0.302*n*pi-pi/4)');xlabel('k');axis([140,240,0,4]); 3 / 15

Matlab仿真实验报告

Matlab仿真实验报告 院系: 专业: 班级: 学号: 姓名: 序号:

实验一:数字信号的 FFT 分析 1. 实验内容及要求 (1) 离散信号的频谱分析 设信号 此信号的0.3pi 和0.302pi 两根谱线相距很近,谱线0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用DFT 分析其频谱,要求得到清楚的三根谱线。 (2) DTMF 信号频谱分析 用计算机声卡采集一段通信系统中电话双音多频(DTMF )拨号数字0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。 2. 实验目的 通过本次实验,应该掌握: (1) 用傅立叶变换进行信号分析时基本参数的选择。 (2) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT )后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (3) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (4) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (5) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。 3. 实验代码 1) 离散信号的频谱分析 close all;%关闭文件 clear;%清除内存 N=1000; n=0:N-1;%n=0,1, (999) xn=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);%生成含有1000个元素的信号序列 yn=fft(xn,N);%快速傅里叶变换 stem(2*n/N,log(abs(yn)+1),'b');%abs(yn)表示求模,作脉冲图 axis([0.25,0.5,-1,10])%限制坐标范围 title('FFT 频谱分析');%标题 %ylabel('对X(k)的模取对数');%Y 轴标签 text(0.35,8,'电子4班,周爽,2012210931') 2) DTMF 信号频谱分析 close all; clear; tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68]; % DTMF 信号代表的16个数 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

北邮大二下 Matlab实验报告

北京邮电大学 《数字信号处理》Matlab实验 学院: 班级: 姓名: 学号: 班内序号:

实验一 【实验要求】 实现重叠相加和重叠保留算法,完成线性卷积的分段计算。 【实验原理】 一、算法产生背景 DFT是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。 对于线性非移变离散系统,可由线性卷积表示时域输入输出关系。即y(n)=x(n)*h(n)。 通常采用循环卷积降低运算量,但实际中往往无法满足对信号处理的实时性要求。因此,产生了重叠相加法和重叠保留法两种典型的算法,用以快速计算线性卷积,成为了DFT的一个重要应用。 二、算法基本思想 1.重叠相加法 重叠相加法是将待过滤的信号分割成长为N的若干段,每一段都可以和有限时宽单位取样响应作卷积,再将过滤后的各段重叠相加。 具体算法实现:建立缓存序列,每次输入N点序列,通过计算x(n)和h(n)的循环卷积实现线性卷积运算,将缓存的M-1点序列和卷积结果相加,并输出前N点作为计算结果,同时缓存后M-1点,如此循环,直至所有分段计算完毕,则输出序列y(n)为最终计算结果。

2.重叠保留法 重叠保留法相当于将x(n)和h(n)作循环卷积,然后找出循环卷积中相当于线性卷积的部分。在这种情况下,将序列y(n)分为长为N的若干段,每个输入段和前一段有M-1个重叠点。此时只需要将发生重叠的前M-1个点舍去,保留重叠的部分并输出,则可获得序列y(n)。

【流程图设计】1.重叠相加法

2.重叠保留法

【MATLAB源代码】 1.重叠相加法 (1)function y = ovrlplus (x,h,N) %重叠相加法实现 M = length(h); %获得h(n)的长度 if N N error('N must be>=the length of x1') end if length(x2)>N error('N must be>=the length of x1') end x1=[x1 zeros(1,N-length(x1))]; x2=[x2 zeros(1,N-length(x2))]; m=[0:1:N-1]; x2=x2(mod(-m,N)+1); H=zeros(N,N); for n=1:1:N H(n,:)=cirshftt(x2,n-1,N); end y=x1*conj(H'); (3)function y=cirshftt(x,m,N)%循环移位实现 if length(x)>N error('N must be >= the length of x') end x=[x zeros(1,N-length(x))];%补零函数(x(n)的长度小于N,将不够的地方全部补

北邮MATLab仿真实验报告DSP

北京邮电大学MATLAB仿真实验报告 姓名: 班级: 学号: 班内序号

实验一:数字信号的FFT 分析 1. 实验内容及要求 离散信号的频谱分析: 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 2. 实验分析 要得到清晰的三根谱线,用matlab 内置函数fft 对时域信号进行快速傅里叶变换,需要选好变换点数N ,以避免出现频谱模糊现象。程序中选择N=1000 由于谱线0.45pi 的幅度很小,在作图时需要对坐标比例进行控制。使用axis 函数实现。 3. 代码及注释 频谱分析: clf; close all;%关闭所有图形窗口 N=1000;%DFT 点数 n=[1:1:N]; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); y=fft(x,N); mag=abs(y);%对FFT 结果求模 w=2*pi/N*[0:1:N-1]; %数字角频率w subplot(2,1,1);%将图形窗分为2行1列 stem(n,x,'.');%画脉冲图 title('时域'); xlabel('n'); ylabel('x(n)'); subplot(2,1,2); stem(w/pi,mag);%归一化角频率 axis([0 0.5 0 2]);%控制坐标范围以使谱线幅度合适 title('1000点DFT'); xlabel('数字频率'); ylabel('X(k)'); grid on; 4. 结果截图 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

北京邮电大学MATLAB实验报告

DSP--MATLAB实验报告 实验名称:MATLAB第一次上级实验 学生姓名: 班级: 班内序号: 学号: 日期: 1.实验要求 (1) 常用数字信号序列的产生: 熟悉Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。请用Matlab 画出下列序列的波形(-10> plot(n,x) 单位阶跃序列 2 u(n-5) :x=stepseq(5,-20,120),n=[-20:120];plot(n,2*x) 矩形序列R(n):x1=stepseq(-10,-10,60),n1=[-10:60],x2==stepseq(10,-10,60),n2=[-10:60],y=x1-x2,n= [-10:60],plot(n,y) y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn):n=[0:0.1:20];x=2*sin(0.3*pi*n)+0.5*cos(2*0.6*pi*n);plot(n,x) 加法:δ(n)+ 2 u(n-5):x1=impseq(0,-20,120);n=[-20:120];

北邮DSP Matlab仿真实验

《数字信号处理》Matlab 实验 一. 离散信号的 FFT 分析 知识点:利用FFT 对信号频谱进行分析,用DFT 进行信号分析时基本参数的选择,以及信号经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT )后信号频谱上的区别。 实验教学内容: 1.用Matlab 编程上机练习。已知: N=25。这里Q=0.9+j0.3。可以推导出 , 首先根据这个式子计算X(k)的理论值,然后计算输入序列x(n)的32个值,再利用基2时间抽选的FFT 算法,计算x(n)的DFT X(k),与X(k)的理论值比较(要求计算结果最少6位有效数字)。 解: format long Q=0.9+0.3i; WN=exp(-2*pi*1i/32); Xk=(1-Q^32)./(1-Q*WN.^[0:24]); xn=Q.^[0:24]; Xkfft=fft(xn,32); for (k0=1:1:25) difference=Xk(k0)-Xkfft(k0); end; subplot(3,1,1);stem(abs(Xk(1:1:24)),'.');title('DFT x(n)');xlabel('k');axis([0,35,0,15]); subplot(3,1,2);stem(abs(Xkfft(1:1:32)),'g.');title('FFT x(n)');xlabel('k');axis([0,35,0,15]); subplot(3,1,3);stem(abs(difference(1:1:25)),'r.');title('Xk-Xkfft');xlabel('k');axis([0,35,0,15]); 0n N-1 ()0 n 0, n N n Q x n ?≤≤=? <≥?11,011)()()(k k 1 nk 1 -=--===∑∑-=-=N k QW Q QW W n x k X N N n N N n N N n ,

北邮《数字信号处理》Matlab实验——梳状滤波器的应用

实验题目3:梳状滤波器的应用 实验目的: 录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。 试验内容: 1、对试验原理的说明 回声可以认为是由原始声音衰减后的多个延迟叠加组成的,因此回声可以用延迟单元来生成。x(n)表示原始声音信号,a为衰减系数,T为延迟周期,回声信号Y(n)=X(n)+a*x(n‐T)+a^2*x(n‐2T)+……+a^k*x(n‐kT)。Z变换后的系统函数H(z)可由梳状滤波器实现。本实验用MATLAB中的filter(b,a,x)函数可用来仿真差分方程 a(1)*y(n)=b(1)*x(n)+b(2)*x(n‐1)+...+b(nb+1)*x(n‐nb)‐a(2)*y(n‐1)‐...‐a(na+1)*y(n‐na)。 2、在同一张图上,绘制原声音序列x(n)、加入一次反射后的声音序列x1(n)、加入三次反射后的声音序列x3(n)和加入无穷多次反射后的声音序列x I(n)。 [x, fs] = wavread('a.wav'); % sound(x, fs); a = 0.6; T = 0.2; y1 = filter([1, zeros(1,T*fs-1), a], 1, x); % sound(y1, fs); wavwrite(y1, fs, 'echo1.wav'); y2 = filter([1, zeros(1,T*fs-1), a, zeros(1,T*fs-1), a^2, zeros(1,T*fs-1), a^3], 1, x); % sound(y2, fs); wavwrite(y2, fs, 'echo2.wav'); y3 = filter(1, [1, zeros(1,T*fs-1), a], x); % sound(y3, fs); wavwrite(y3, fs, 'echo3.wav'); plot(y3, 'm'); hold on; plot(y2, 'r'); hold on; plot(y1, 'g'); hold on; plot(x, 'b');

北邮DSP Matlab实验一

1.实验要求 ●(1) 常用数字信号序列的产生: ●熟悉 Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够 用 Matlab 产生和绘制出一些常用离散信号序列。请用 Matlab 画出下列序列的波形(-10=0];x=2*x; stem(n,x) xlabel('n');ylabel('x(n)');title('单位阶跃序列2 u(n-5)') grid ●矩形序列: no=0; n01=4;

北邮数字信号处理软件实验Matlab

数字信号处理软件实验 MATLAB仿真 2015年12月16日

实验一:数字信号的 FFT 分析 ● 实验目的 通过本次实验,应该掌握: (a) 用傅立叶变换进行信号分析时基本参数的选择。 (b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT )后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。 ● 实验内容及要求 ? 离散信号的频谱分析 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 ? DTMF 信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

●MATLAB代码及结果 ?离散信号的频谱分析 clf; close all; N=1000; n=1:1:N; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); y=fft(x,N); mag=abs(y); w=2*pi/N*[0:1:N-1]; stem(w/pi,mag); axis([0.25 0.5 0 2]); xlabel('频率'); ylabel('X(k)'); grid on;

信号与系统matlab实验

习题三 绘制典型信号及其频谱图 1.更改参数,调试程序,绘制单边指数信号的波形图和频谱图。观察参数a对信号波形及 其频谱的影响。 程序代码: close all; E=1;a=1; t=0:0.01:4; w=-30:0.01:30; f=E*exp(-a*t); F=1./(a+j*w); plot(t,f);xlabel('t');ylabel('f(t)'); figure; plot(w,abs(F));xlabel('\omega');ylabel('|F(\omega)|';

E=1,a=1,波形图频谱图更改参数E=2,a=1;

更改参数a,对信号波形及其频谱的影响。(保持E=2)上图为a=1图像 a=2时

a=4时 随着a的增大,f(t)曲线变得越来越陡,更快的逼近0,而对于频谱图,随着a增大,图像渐渐向两边张开,峰值减小,陡度减小,图像整体变得更加平缓。

2.矩形脉冲信号 程序代码: close all; E=1;tao=1; t=-4:0.1:4; w=-30:0.1:30; f=E*(t>-tao/2&tao/2)+0*(t<=-tao/2&t>=tao/2); F=(2*E./w).*sin(w*tao/2); plot(t,f);xlabel('t');ylabel('f(t)'); figure; plot(w,abs(F));xlabel('\omega');ylabel('|F(\omega)|') ; figure; plot(w,20*log10(abs(F))); xlabel('\omega');ylabel('|F(\omega)| in dB'); figure; plot(w,angle(F));xlabel('\omega');ylabel('\phi(\omega )');

【VIP专享】北邮《数字信号处理》Matlab实验——周期序列的谱分析

实验题目2:周期序列的谱分析 实验目的: 利用DFT 分析模拟信号()()cos 16a x t t π=之频谱。 试验内容: 1、设定采样周期T 并说明原因 根据奈奎斯特取样条件,fs>=2f=2*8=16Hz ,所以取fs=20Hz ,T=1/f=0.05s 。 2、若令x(n)=cos(16πnT),确定该序列之周期N 并说明原因 因为4()cos()5x n n π=,2542 5 ππ=,所以周期N=5. 3、绘制10个周期内x(n)的取值情况 T = 1/20; t = 0:T:5-T; N = 5; figure(1); xn = cos(16*pi*t); stem(0:10*N-1, xn(1:10*N)); title('10个周期内x(n)的取值情况'); ylabel('x(n)'); xlabel('n');

4、令x1(n)表示x(n)的主值序列,绘制|DFT(x1(n)|,解释取值情况 figure(2); x1n = xn(1:N); stem(0:N-1, x1n); title('x(n)的主值序列'); ylabel('x1(n)'); xlabel('n'); figure(3); Xk = fft(x1n, N); stem(0:N-1, abs(Xk)); title('|DFT(x1(n))|'); ylabel('X1(k)'); xlabel('k');

所得X1(k)取值即为x(n)的5点(一个周期内)DFT结果,为清晰谱线。 5、令x2(n)表示x(n)的任一周期,绘制|DFT(x2(n)|,解释取值情况 figure(4); r = 4; x2n = xn(r:r+N-1); stem(0:N-1, x2n); title('x(n)的任一周期'); ylabel('x2(n)'); xlabel('n'); figure(5); Xk = fft(x2n, N); stem(0:N-1, abs(Xk)); title('|DFT(x2(n))|'); ylabel('X2(k)'); xlabel('k');

MATLAB实验报告(信号与线性系统分析)

实验一 MATLAB 的基本使用 【一】 实验目的 1.了解MA TALB 程序设计语言的基本特点,熟悉MATLAB 软件的运行环境; 2.掌握变量、函数等有关概念,掌握M 文件的创建、保存、打开的方法,初步具备将一般数学问题转化为对应计算机模型处理的能力; 3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。 【二】 MATLAB 的基础知识 通过本课程的学习,应基本掌握以下的基础知识: 一. MATLAB 简介 二. MATLAB 的启动和退出 三. MATLAB 使用界面简介 四. 帮助信息的获取 五. MATLAB 的数值计算功能 六. 程序流程控制 七. M 文件 八. 函数文件 九. MATLAB 的可视化 【三】上机练习 1. 仔细预习第二部分内容,关于MATLAB 的基础知识。 2. 熟悉MATLAB 环境,将第二部分所有的例子在计算机上练习一遍 3. 已知矩阵???? ??????=??????????=123456789,987654321B A 。求A*B ,A .* B ,比较二者结果是否相同。并利用MATLAB 的内部函数求矩阵A 的大小、元素和、长度以 及最大值。 解:代码:A=[1,2,3;4,5,6;7,8,9]; B=[9,8,7;6,5,4;3,2,1]; A*B A.*B 两者结果不相同A*B=30 24 18 84 69 54 138 114 90 A.*B= 9 16 21 24 25 24 21 16 9

求A 矩阵的行和列: [M,N]=size(A) M = 3 N = 3 求A 矩阵的长度:x=length(A) x = 3 元素和:sum(sum(A)) ans = 45 最大值:max(max(A)) ans = 9 4. Fibonacci 数组的元素满足Fibonacci 规则:),2,1(,12 =+=++k a a a k k k ; 且121 ==a a 。现要求该数组中第一个大于10000的元素。 1) 在命令窗口中完成; 2) 利用M 文件完成; 3) 自己定义一个函数文件,并在命令窗口中调用该函数完成。 解:(1)代码: b=1; s=2; while s<10000 c=s; s=s+b; b=c; end 结果:s s = 10946 (2)M 文件中代码:(保存文件名为Untitled ) 结果:Untitled s =

相关文档
相关文档 最新文档