Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 13 ![]() |
![]()
13.1.1 Simulink的概念 446
13.1.2 Simulink的应用和特点 446 13.2 Simulink的基本操作 447 13.2.1 启动Simulink 447 13.2.2 选择模块 448 13.2.3 模块的连接 449 13.2.4 模块的基本操作 449 13.2.5 模块参数设置 450 13.2.6 仿真器设置 450 13.2.7 运行仿真 451 13.3 常用的模块库 452 13.3.1 Simulink常用模块子集 452 13.3.2 连续时间模块子集 453 13.3.3 非连续时间模块子集 454 13.3.4 离散时间模块子集 455 13.3.5 逻辑和位操作模块子集 456 13.3.6 查表模块子集 457 13.3.7 数学运算模块子集 459 13.3.8 端口和子系统模块子集 459 13.3.9 信号特征模块子集 460 13.3.10 信号路径模块子集 462 13.3.11 Sinks模块子集 463 13.3.12 信号源模块子集 464 13.3.13 用户定义模块子集 465 13.4 子系统及其封装 466 13.4.1 子系统 466 13.4.2 子系统的封装 467 13.5 Simulink模型工作空间 469 13.6 本章小结 470 第14章 Simulink建模和S-函数( 教学视频:32分钟) 471 14.1 回调函数 471 14.1.1 模型回调函数 471 14.1.2 模块回调函数 472 14.2 运行仿真 474 14.2.1 仿真参数的设置 474 14.2.2 仿真的出错信息 476 14.2.3 使用MATLAB命令运行仿真 476 14.3 模型的调试 478 14.3.1 Simulink调试器 478 14.3.2 命令行调试 479 14.4 S-函数建模 479 14.4.1 S-函数介绍 480 14.4.2 S-函数工作原理 480 14.4.3 M文件的S-函数 480 14.4.4 S-函数实例分析 481 14.5 本章小结 484 第6篇 MATLAB高级应用 第15章 GUI编程开发( 教学视频:70分钟) 486 15.1 图形句柄 486 15.1.1 MATLAB图形系统 486 15.1.2 图形句柄 487 15.1.3 图形对象的属性 487 15.2 图形对象 487 15.2.1 创建图形对象 487 15.2.2 获取对象的属性 488 15.2.3 设置对象的属性 489 15.2.4 对象的基本操作 491 15.2.5 root根对象 494 15.2.6 figure对象 495 15.2.7 axes坐标轴对象 495 15.2.8 核心图形对象 496 15.3 用户接口对象 499 15.3.1 uicontrol对象 499 15.3.2 uimenu对象 500 15.3.3 uicontextmenu对象 502 15.3.4 uitoolbar对象 503 15.3.5 uibuttongroup对象 506 15.3.6 uipanel对象 506 15.3.7 uitable对象 506 15.4 常用的对话框 507 15.4.1 消息对话框 508 15.4.2 错误对话框 508 15.4.3 警告对话框 509 15.4.4 帮助对话框 509 15.4.5 输入对话框 510 15.4.6 列表对话框 511 15.4.7 问题对话框 512 15.4.8 进度条设置对话框 513 15.4.9 路径选择对话框 514 15.4.10 文件打开对话框 515 15.4.11 文件保存对话框 516 15.4.12 页面设置对话框 518 15.4.13 打印预览对话框 518 15.4.14 打印对话框 519 15.4.15 颜色设置对话框 520 15.4.16 字体设置对话框 520 15.5 本章小结 521 第16章 GUIDE工具建立GUI界面( 教学视频:79分钟) 522 16.1 采用GUIDE建立GUI 522 16.1.1 图形用户界面概述 522 16.1.2 GUIDE启动 522 16.1.3 GUI对象的常用属性 526 16.1.4 GUI的M文件 528 16.1.5 数据传递 529 16.2 简单实例分析 529 16.2.1 简单的按钮 530 16.2.2 简单的滑动条 530 16.2.3 弹出式菜单 531 16.2.4 列表框 531 16.2.5 加法运算 532 16.2.6 坐标轴 533 16.2.7 菜单 534 16.2.8 快捷菜单 535 16.3 综合实例分析 536 16.3.1 声音的显示和播放 536 16.3.2 语音实时采集和显示 538 16.4 本章小结 540 第17章 文件夹管理和文件I/O操作( 教学视频:89分钟) 541 17.1 文件夹管理 541 17.1.1 当前文件夹 541 17.1.2 文件夹管理 542 17.2 低级文件I/O 546 17.2.1 打开和关闭文件 546 17.2.2 读取和写入二进制文件 547 17.2.3 逐行读取文本文件 549 17.2.4 格式化读取和写入文件 549 17.2.5 文件内部的位置控制 552 17.3 高级文件I/O 553 17.3.1 使用向导导入数据 553 |
![]() |
![]() |
![]() |
#2 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 13 ![]() |
![]()
17.3.2 带有分隔符的数据文件 555
17.3.3 带有文本内容的数据文件 556 17.3.4 利用函数importdata()导入数据 558 17.3.5 利用函数diary()导出数据 559 17.3.6 其他函数 559 17.4 音频文件 560 17.4.1 读取音频文件 560 17.4.2 播放和录音 563 17.4.3 写入音频文件 564 17.5 图像文件 566 17.5.1 读取和显示图像 566 17.5.2 获取文件信息 567 17.5.3 写入图片文件 568 17.5.4 通过函数image()显示图像 569 17.6 视频文件 570 17.6.1 读取视频文件 570 17.6.2 获取文件信息 572 17.6.3 写入视频文件 572 17.7 表单文件 573 17.7.1 读取表单文件 574 17.7.2 获取表单文件信息 575 17.7.3 写入表单文件 575 17.7.4 Lotus 123表单文件 576 17.8 本章小结 576 第18章 MATLAB编译器( 教学视频:28分钟) 577 18.1 编译器概述 577 18.2 编译器的安装和配置 577 18.2.1 查看系统信息 577 18.2.2 对编译器进行配置 578 18.3 编译器的使用 578 18.3.1 编译过程 578 18.3.2 deploytool工具 581 18.3.3 MCR的安装 583 18.4 本章小结 584 第7篇 工具箱与接口编程 第19章 信号处理工具箱( 教学视频:75分钟) 586 19.1 数字信号处理理论 586 19.1.1 信号处理工具箱 586 19.1.2 离散信号 586 19.1.3 波形发生器 592 19.2 改变信号的采样率 600 19.2.1 改变信号的采样率 600 19.2.2 降低信号的采样率 601 19.2.3 提高信号的采样率 603 19.3 FIR数字滤波器 604 19.3.1 FIR滤波器介绍 604 19.3.2 常用的窗函数 604 19.3.3 基于窗函数的FIR滤波器 607 19.3.4 基于频率采样的FIR滤波器 609 19.3.5 FIR滤波器实例分析 610 19.4 IIR数字滤波器 611 19.4.1 IIR数字滤波器介绍 611 19.4.2 IIR数字滤波器 612 19.4.3 IIR数字滤波器阶数的选择 616 19.4.4 IIR滤波器实例分析 617 19.5 非参数法功率谱估计 618 19.5.1 周期图法功率谱估计 618 19.5.2 Welch法功率谱估计 619 19.6 参数模型法功率谱估计 620 19.6.1 AR模型功率谱估计 620 19.6.2 Yule-Walker法功率谱估计 621 19.6.3 Burg法功率谱估计 622 19.6.4 协方差法功率谱估计 622 19.7 子空间法功率谱估计 623 19.7.1 特征向量法功率谱估计 623 19.7.2 MUSIC算法功率谱估计 624 19.8 本章小结 624 第20章 小波分析工具箱( 教学视频:54分钟) 625 20.1 小波分析 625 20.1.1 小波分析简介 625 20.1.2 连续小波变换 626 20.1.3 离散小波变换 626 20.1.4 多分辨分析 627 20.1.5 小波包分解 628 20.1.6 常用的小波 629 20.2 一维小波分解和重构 631 20.2.1 一维连续小波分解 631 20.2.2 一维离散小波分解和重构 631 20.3 二维小波分解和重构 634 20.3.1 二维小波的单层分解和重构 635 20.3.2 二维小波的多层分解和重构 635 20.4 小波包分析 638 20.4.1 一维小波包的分解和重构 638 20.4.2 二维小波包的分解和重构 642 20.4.3 小波能量和小波熵 643 20.5 小波工具箱的GUI工具 645 20.5.1 小波工具箱介绍 645 20.5.2 小波和小波包的显示工具 646 20.5.3 一维小波分析工具 647 20.5.4 二维小波分析工具 648 20.6 本章小结 649 第21章 图像处理工具箱( 教学视频:78分钟) 650 21.1 图像处理基础 650 21.1.1 数字图像处理 650 21.1.2 图像处理工具箱介绍 651 21.1.3 MATLAB中图像类型 651 21.1.4 MATLAB图像类型转换 656 21.1.5 图像的读写和显示 661 21.1.6 图像浏览器 666 21.2 图像的常用操作 667 21.2.1 图像基本运算 667 21.2.2 图像的直方图和直方图均衡化 670 21.2.3 图像的对比度增强 672 21.2.4 图像的插值 673 21.2.5 图像中添加噪声 675 21.2.6 图像剪切 675 21.3 图像的变换技术 677 21.3.1 图像的傅里叶变换 677 21.3.2 图像的离散余弦变换 678 21.4 图像增强技术 679 21.4.1 像素值 679 21.4.2 图像的滤波 680 21.5 图像的边缘检测 683 21.6 数字图像的采集 684 21.6.1 USB摄像头设置 684 21.6.2 图像和视频的采集 685 21.6.3 imaqtool工具 688 21.7 本章小结 689 第22章 神经网络工具箱( 教学视频:31分钟) 690 22.1 人工神经网络概述 690 22.1.1 人工神经网络介绍 690 22.1.2 人工神经元 691 22.1.3 MATLAB神经网络工具箱 692 22.2 感知器神经网络 693 22.2.1 感知器神经网络 693 22.2.2 设计实例分析 694 22.3 线性神经网络 696 22.3.1 线性神经网络 696 22.3.2 设计实例分析 697 22.4 BP网络 698 22.4.1 BP网络介绍 698 22.4.2 BP网络的创建 699 22.4.3 BP网络实例分析 700 22.5 径向基神经网络 702 22.5.1 径向基神经网络 702 22.5.2 广义回归神经网络 703 22.5.3 概率神经网络 704 22.6 神经网络GUI工具 706 22.6.1 nntool工具 706 22.6.2 nprtool工具 709 22.7 本章小结 712 第23章 MATLAB与Word和Excel的接口( 教学视频:33分钟) 713 23.1 MATLAB与Word混合使用 713 23.1.1 Notebook的安装 713 23.1.2 Notebook的使用环境 714 23.1.3 Notebook实例分析 718 23.2 MATLAB与Excel混合使用 719 23.2.1 Excel link的安装 720 23.2.2 设置启动方式 721 23.2.3 启动和终止Excel link 722 23.2.4 Excel link工具栏 722 23.2.5 实例分析 723 23.3 本章小结 726 |
![]() |
![]() |
![]() |
#3 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 13 ![]() |
![]()
前 言
MATLAB软件是由美国Mathworks公司发布的主要面向科学计算、数据可视化、系统仿真及交互式程序设计的高科技计算环境。由于MATLAB功能强大,简单易学,并且对问题的描述和求解符合人们的思维方式和数学表达习惯,所以它已经成为高校教师、科研人员和工程技术人员的必学软件。使用MATLAB,可极大地提高人们的工作效率和质量。 MATLAB软件代表了当今国际科学计算软件的先进水平,应用领域非常广泛。很多人都希望将MATLAB强大的数值计算和分析功能应用于自己的项目和实践中,从而可以直观、方便地进行分析、计算和设计工作。编写这本书的目的,就是为了向读者全方位介绍MATLAB编程和开发技术。 本书由浅入深,全面、系统地介绍了MATLAB基础、科学计算、数据可视化、编程、Simulink仿真技术、高级应用及常用的工具箱等内容。书中的每一章都提供了大量的实例程序,以方便读者进行练习和学习,每个例程都经过精挑细选,具有很强的针对性,适合各个阶段的读者学习。本书既注重基础知识,又非常注重实践,读者可以快速上手并迅速提高。通过本书的学习,读者不仅可以全面掌握MATLAB编程和开发技术,还可以提高快速分析和解决实际问题的能力,从而能够在最短的时间内,以最好的效果解决实际的工程和科学问题,提升工作效率。 本书的特点 1.每章都提供对应的教学视频,学习高效、直观 为了便于读者高效、直观地学习本书中的内容,作者对每章的重点内容都特意制作了教学视频,这些视频和本书的实例文件一起收录于配书DVD光盘中。 2.结构合理,内容全面、系统 本书详细介绍了MATLAB编程、数据分析和处理、数据可视化、Simulin仿真、GUI编程开发及常用的工具箱,将实际项目开发经验贯穿于全书,思想和内容都非常丰富。在内容的安排上,则根据读者的学习习惯和内容的梯度合理安排,更加适合读者学习。 3.叙述详实,例程丰富 本书有详细的例程,每个例子都经过作者的精挑细选,有很强的针对性。书中的程序都有完整的代码,而且代码非常简洁和高效,便于读者学习和调试。读者也可以直接重用这些代码来解决自己的问题。 4.结合实际,编程技巧贯穿其中 MATLAB编程非常灵活,所以本书写作时特意给出了大量的实用编程技巧,这些技巧的灵活使用,将会让你事半功倍。 5.语言通俗,图文并茂 对于程序的运行结果,本书给出了大量的图片。本书不仅注重基础知识,而且非常注重实践,让读者快速上手,迅速掌握MATALB知识。 本书内容体系 本书共23章,分为7篇,各篇对应的章节和具体内容介绍如下。 第1篇包括第1~4章,主要介绍MATLAB的基础知识,讲解MATLAB 2010a的安装和基本操作,MATLAB的数据类型和运算符,数组和矩阵及字符串等操作。 第2篇包括第5~8章,主要介绍利用MATLAB进行科学计算,包括多项式、插值、极限等基本数据分析,微积分运算、概率论和数理统计,以及MATLAB的符号计算功能。 第3篇包括第9章和第10章,主要介绍MATLAB的数据可视化,包括二维数据可视化和三维数据可视化,同时讲解了图形的标注、特殊图形的绘制,以及三维图形的视角、色彩和光照效果等。 第4篇包括第11章和第12章,主要介绍MATLAB编程,包括脚本M文件和函数M文件,以及程序的流程控制,最后介绍了程序的调试、程序的性能分析和常用的编程技巧等。 第5篇包括第13章和第14章,主要介绍利用Simulink进行系统的仿真,包括Simulink建模的原理、常用操作、基本模块库、子系统的封装技术、Simulink调试器和S-函数等。 第6篇包括第15~18章,主要介绍MATLAB的一些高级应用,例如图形句柄、利用GUIDE建立图形用户界面、文件I/O操作及MATLAB的编译器等。 第7篇包括第19~23章,主要介绍MATLAB的常用工具箱和与Word和Excel的接口,包括信号处理工具箱、小波分析工具箱、图像处理工具箱、神经网络工具箱。 本书读者对象 MATLAB初学者; 想全面、系统地学习MATLAB的人员; MATLAB技术爱好者; 利用MATLAB进行编程和开发的技术人员; 大中专院校的学生和老师; 相关培训学校的学员。 本书作者 本书由东北大学机械电子工程研究所的赵海滨主笔编写。其他参与编写的人员有武冬、郅晓娜、孙美芹、卫丽行、尹翠翠、蔡继文、陈晓宇、迟剑、邓薇、郭利魁、金贞姬、李敬才、李萍、刘敬、陈慧、刘艳飞、吕博、全哲、佘勇、宋学江、王浩、王康、王楠、杨宗芳、张严虎、周玉、张平、张靖波、周芳、杨罡、于海滨、张晶杰、张利峰、杨景凤、陈锴、郑剑锋、叶佩思、张涛、赵东彪、王双。在此表示感谢! 在此感谢我的父母、家人、研究所的老师,以及所有帮助过我的人。由于时间仓促,笔者水平有限,书中难免存在遗漏和不足之处,恳请广大读者提出宝贵意见。 编著者 |
![]() |
![]() |
![]() |
#4 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 13 ![]() |
![]()
第5章 MATLAB数据分析
针对数据分析和处理,MATLAB提供了大量的函数,非常方便和灵活。本章将详细介绍如何利用MATLAB进行一些基本的数据分析,主要包括多项式及其函数,插值,以及函数的极限。MATLAB能够很好地解决多项式运算问题,这些函数用于多项式的建立、多项式求值、多项式乘法和除法、多项式求导和多项式展开和拟合等。插值函数,主要包括一维插值、二维插值、样条插值和高维插值等内容。MATLAB提供了非常强大的函数,可以非常方便和灵活地求得函数的极限。 5.1 多项式及其函数 MATLAB提供了一些处理多项式的专用函数,用户可以很方便地进行多项式的建立、多项式求值、乘法和除法运算,以及求多项式的导数和微分、多项式的根、多项式的展开和拟合等。 5.1.1 多项式的建立 MATLAB语言中,对于多项式 ,用多项式的系数按照降幂次序存放在向量 中。顺序必须是从高到低进行排列。例如,多项式 可以用系数向量 来表示。对多项式的操作就转换为对多项式系数向量的操作问题, 次多项式用一个 维的行向量表示,在多项式中缺少的幂次要用“0”来补齐。在MATLAB中,可以采用直接输入多项式系数建立多项式,也可以采用多项式的根来建立多项式,下面分别进行介绍。 1.直接输入多项式系数法 MATLAB中多项式是以向量的形式存储的,输入向量后,MATLAB将按照降幂顺序自动把向量的元素分配给多项式各项的系数。该向量可以是行向量,也可以是列向量。 【例5-1】 使用向量来创建多项式 ,并进行显示。 首先创建系数向量,然后使用函数poly2sym()将该向量转换为多项式,直接进行输出,也可以采用函数disp()进行多项式的显示,代码如下: >> clear all; p1=[4 3 2 1]; y=poly2sym(p1) %由向量创建多项式 disp(y) %显示多项式 运行程序,输出结果如下: y = 4*x^3+3*x^2+2*x+1 4*x^3+3*x^2+2*x+1 在MATLAB中,多项式的输出采用降幂形式。如果多项式的系数为0,则在输出的时候不显示,可采用函数disp()来显示多项式。 2.由多项式的根来建立多项式 如果多项式的根已知,可以采用函数poly()建立多项式。其调用格式为p=poly(r),其中r为由多项式的根组成的向量,p为输出的多项式的系数向量。 【例5-2】 已知某多项式的根为2、3、4,求该多项式。代码如下: >> r=[2 3 4]; p=poly(r); %由多项式的根创建多项式 y=poly2sym(p) %显示多项式 运行程序后,输出结果如下: y = x^3-9*x^2+26*x-24 在程序中,函数poly()通过多项式的根创建多项式,多项式的根向量为r。通过函数poly2sym()对创建的多项式进行显示。 |
![]() |
![]() |
![]() |
#5 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 13 ![]() |
![]()
5.1.2 多项式的求值与求根
在MATLAB中,通过函数polyval()和polyvalm()可以对多项式进行求值,两者的区别为前者是代数多项式求值,后者是矩阵多项式求值。通过函数roots()对多项式进行求根,如果已经知道多项式的根,也可以通过函数poly()建立相对应的多项式。下面分别进行 介绍。 1.多项式求值 在MATLAB中,提供了两个函数对多项式进行求值,函数polyval()和polyvalm()。函数polyval()以数组或矩阵中的元素为计算单位,函数polyvalm()以矩阵为计算单位。 函数polyval()的调用方式为y=polyval(p, x),其中参数p为行向量形式的多项式,参数x为带入多项式的值。参数x可以是标量,也可以是向量和矩阵。如果参数x为向量或矩阵,则该函数对向量或矩阵中的每一个元素计算多项式的值,其返回值y也分别为向量或矩阵。 【例5-3】 求多项式 在点2、3、4、5的值。代码如下: >> clear all; p=[1 -1 -6]; %多项式的系数向量 x=2:5; y=polyval(p,x) %求多项式在x处的值 运行程序后输出结果如下: y = -4 0 6 14 函数polyvalm()的调用方式为y=polyvalm(p, x),其中参数p为行向量形式的多项式,参数x必须为方阵,输出结果仍然为方阵。 【例5-4】 求 时,多项式 的值。 利用函数polyvalm()时,输出结果计算公式为 ,常数值变为常数乘以相同阶次的单位矩阵。如果采用函数polyval(),计算矩阵中每个元素对应的多项式的值。下面分别采用函数polyvalm()和polyval()对该矩阵进行计算,代码如下: >> x=[1 2 ;3 4]; p=[2 3 4]; y1=polyvalm(p,x) %采用polyvalm()函数,以矩阵为计算单位 x=[1 2 ;3 4]; p=[2 3 4]; y2=polyval(p,x) %采用polyval()函数,以矩阵的元素为计算单位 运行程序后,输出结果如下: y1 = 21 26 39 60 y2 = 9 18 31 48 当采用函数polyval()时,虽然输入参数是矩阵,但在计算时将矩阵的每个元素分别输入多项式,计算对应的输出。 2.多项式求根 在MATLAB中,利用roots()函数来求多项式的根,其调用格式为x=roots(p),其中参数p为多项式系数,输出参数x为多项式的根。对于n次多项式具有n个根,这些根可能是实根,也可能是共轭复根。在MATLAB中,如果已经知道多项式的根,可以利用函数poly()求多项式的系数,其调用格式为y=poly(x),输入参数x为根,输出参数y为得到的多项式系数向量。 【例5-5】 求多项式 的根,以及以4和5为根的多项式。代码如下: >> clear all; p=[1 0 0 -1 -6]; x1=roots(p) %对多项式p求根 x2=[4 5]; y=poly(x2); %求以x2为根的多项式 y=poly2sym(y) 运行程序后,输出结果如下: x1 = 1.6638 -0.1021 + 1.5684i -0.1021 - 1.5684i -1.4597 y = x^2 - 9*x + 20 利用函数roots()计算多项式的根,非常方便,函数的返回值x是一个向量,其长度等于多项式的根的个数。 |
![]() |
![]() |
![]() |
#6 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 13 ![]() |
![]()
5.1.3 多项式乘法和除法
在MATLAB中,使用函数conv()对多项式进行乘法运算。其调用格式为c=conv(a, b),a和b为多项式的系数向量,该函数实现向量a和b的卷积,在代数上相当于多项式a乘以多项式b,其中c为相乘所产生的多项式的系数向量。 【例5-6】 求多项式 和 的乘积。采用函数conv()实现,其MATLAB程序如下: p1=[4 2 0 5]; %缺少的幂次用0补齐 p2=[5 8 1]; y1=poly2sym(p1) y2=poly2sym(p2) p3=conv(p1,p2); %多项式相乘 y=poly2sym(p3) 运行程序后,输出结果如下: y1 = 4*x^3+2*x^2+5 y2 = 5*x^2+8*x+1 y = 20*x^5+42*x^4+20*x^3+27*x^2+40*x+5 在MATLAB中,采用poly2sym()函数将向量作为多项式的系数进行输出,和其相对应的函数是sym2poly(),该函数将输入多项式的系数提取出来,作为向量进行输出。对于例5-6程序也可以用poly2sym()函数实现(和例5-6的计算结果相同),其MATLAB程序如下: >> syms x p1=sym2poly(4*x^3+2*x^2+5) p2=sym2poly(5*x^2+8*x+1) p3=conv(p1,p2); %多项式相乘 y=poly2sym(p3) 运行程序后,输出结果如下: p1 = 4 2 0 5 p2 = 5 8 1 y = 20*x^5+42*x^4+20*x^3+27*x^2+40*x+5 在MATLAB中,使用函数deconv()对多项式进行除法运算。其调用格式为[q, r] = deconv(a, b),实现解卷积运算。其中a和b为多项式的系数向量,在代数上相当于多项式a除以b,得到的商为q和余多项式r,它们之间的关系为a = conv(b, q) + r。 【例5-7】 求多项式 除以多项式 的商和余数,代码如下: >> p1=[4 3 8 1 4]; p2=[2 3 1]; [q,r]=deconv(p1,p2); %多项式p1除以p2 y1=poly2sym(q) %商 y2=poly2sym(r) %余数 运行程序后,输出结果如下: y1 = 2*x^2-3/2*x+21/4 y2 = -53/4*x-5/4 5.1.4 多项式的导数和积分 在MATLAB中,通过函数polyder()和polyint()分别对多项式进行求导和积分。求导和积分互为逆运算,如果先对多项式进行积分,然后再求导,结果仍然为原来的多项式。下面对多项式的求导和积分分别进行讲解。 1.多项式的导数 在MATLAB中,采用函数polyder()进行多项式的求导,调用方式如下。 y=polyder(p):对以向量p为系数的多项式求导。 y=polyder(a, b):对以a和b为系数的多项式乘积进行求导。 [q,d]=polyder(b, a):返回以b为系数的多项式除以以a为系数的多项式的商的导数,并以q/d格式表示。 【例5-8】 对多项式求导,其MATLAB程序如下: >> p1=[4 3 2]; p2=[2 2 1]; y1=polyder(p1); %对多项式p1求导 y1=poly2sym(y1) y2=polyder(p1,p2); %对多项式p1和p2的乘积求导 y2=poly2sym(y2) [q,d]=polyder(p1,p2); %对多项式p1除以p2的商求导 q=poly2sym(q) d=poly2sym(d) 运行程序后,输出结果如下: y1 = 8*x + 3 y2 = 32*x^3 + 42*x^2 + 28*x + 7 q = 2*x^2 - 1 d = 4*x^4 + 8*x^3 + 8*x^2 + 4*x + 1 在MATLAB中,通过函数polyder()对多项式进行求导,通过对输入参数和输出参数个数的不同,对相对应的多项式进行求导计算。对于函数[q,d]=polyder(b, a),相当于对多项式 求导,结果为 。 2.多项式的积分 在MATLAB中,使用函数polyint()对多项式进行积分运算,其调用方式如下。 polyint(p, k):返回以向量p为系数的多项式的积分,积分的常数项为k。 polyint(p):返回以向量p为系数的多项式的积分,积分的常数项为默认值0。 【例5-9】 对多项式 进行积分运算,其常数项分别为3和0,其实现的MATLAB程序代码如下: p1=[3 2 2]; y1=polyint(p1,3); %对多项式p1进行积分,常数项为3 y1=poly2sym(y1) y2=polyint(p1); %对多项式p1进行积分,常数项为0 y2=poly2sym(y2) 运行程序后,输出结果如下: y1 = x^3 + x^2 + 2*x + 3 y2 = x^3 + x^2 + 2*x 通过polyint()函数对多项式进行积分运算,积分的常数项通过参数k进行设置。如果不对参数k进行设置,则k取默认值0。 |
![]() |
![]() |
![]() |
#7 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 13 ![]() |
![]()
5.1.5 多项式展开
在MATLAB中,有理多项式用它们的分子多项式和分母多项式进行表示,函数residue()可以将多项式之比用部分分式展开,也可以将一个部分分式用多项式之比进行表示。函数residue()的调用方式如下。 [r, p, k]=residue(b, a):求多项式之比b/a的部分分式展开,函数的返回值r是余数,p是部分分式的极点,k是常数项。如果多项式a没有重根,部分分式展开的形式如下: 其中向量r、p的长度和向量a、b的长度有如下关系: 当向量b的长度小于a时,向量k中没有元素,否则应满足: [b, a]=residue(r, p, k):通过部分分式得到多项式,该多项式的形式为b/a。 【例5-10】 将多项式 和 展开成几个简单多项式的和。其实现的MATLAB代码如下: >> clear all; clear all; b=[1 -1 -7 -1]; %分子多项式 a=poly([1;5;6]); %分母多项式 [r,p,k]=residue(b,a) %进行多项式b/a展开 [b1,a1]=residue(r,p,k); %通过余数、极点和常数项来求多项式b1/a1 b1=poly2sym(b1) a1=poly2sym(a1) b=[1 -1 -7 -1]; %多项式a有三重根 a=poly([1;1;1]); %分母多项式 [r,p,k]=residue(b,a) %展开多项式b/a 运行程序后,输出结果如下: r = 27.4000 -16.0000 -0.4000 p = 6.0000 5.0000 1.0000 k = 1 b1 = x^3 - x^2 - 7*x - 1 a1 = x^3 - 12*x^2 + 41*x - 30 r = 2.0000 -6.0000 -8.0000 p = 1.0000 1.0000 1.0000 k = 1 利用函数[r, p, k]=residue(b, a)将多项式b/a进行展开,结果为余数、极点和常数项。对该多项式进行展开后的结果如下: ![]() 将余数、极点和常数项带入函数[b, a]=residue(r, p, k)中,可以求得对应的多项式,并通过b/a的形式给出。 当多项式a有三重根1时,对多项式进行展开后的结果如下: ![]() |
![]() |
![]() |