您好,欢迎光临有路网!
MATLAB高级编程与工程应用
QQ咨询:
有路璐璐:

MATLAB高级编程与工程应用

  • 作者:柏正尧
  • 出版社:科学出版社
  • ISBN:9787030663719
  • 出版日期:2020年12月01日
  • 页数:284
  • 定价:¥69.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    • 出版社
    • ISBN
      9787030663719
    • 作者
    • 页数
      284
    • 出版时间
      2020年12月01日
    • 定价
      ¥69.00
    • 所属分类
    内容提要
    MATLAB是基于矩阵的*通用的科学和工程计算语言,全球数以百万计的工程师和科学家在使用MATLAB进行系统和产品的分析与设计。Simulink是基于MATLAB的可视化框图设计环境,可实现动态系统建模、仿真和分析。《MATLAB**编程与工程应用》是一本MATLAB/Simulink编程与仿真的**教程,**介绍MATLAB/Simulink在电子信息领域的工程应用。《MATLAB**编程与工程应用》介绍了MATLAB编程基础,**软件开发技巧,应用程序设计,Simulink仿真基础,MATLAB/Simulink在信号处理、通信、控制等领域的工程应用,仿真实例丰富。《MATLAB**编程与工程应用》共分为8章,包括MATLAB编程基础、MATLAB**软件开发、MATLAB应用程序设计、Simulink仿真初步、信号处理系统仿真、通信系统仿真、控制系统仿真和Simulink设计与优化。
    文章节选
    第1章 MATLAB编程基础
    1.1 特殊数据类型
    MATLAB支持的数据类型较多,除了常见的数值型、字符和字符串以及日期和时间等数据类型外,还有结构体(structures)、元胞数组(cell arrays)、表(table)和时间表(timetable)、类别数组(categorical arrays)、函数句柄(function handle)和时间序列(time series)等数据类型。其中,结构体、元胞数组、表和时间表是用于存储异构数据(heterogeneous data)的数据容器(data container)。
    1.1.1 结构体
    结构体是采用数据容器—字段(fields)对相关的数据进行分组管理的一种数据类型。结构体由结构数组(struct arrays)构成,每个数组都是一个包含若干字段的struct类结构,因此,结构体也称为结构体数组(structure arrays)。每个字段可以包含任意类型的数据,包括标量数据或者非标量数据。一个结构体中的所有结构数组具有相同的字段名称和数目。不同结构体中相同名称的字段可以包含不同类型和规模的数据。
    结构体中的数据可以采用点记号的形式读取,即结构体名称.字段名(structName. fieldName)。结构体的创建可以采用直接给字段赋值的方式,也可以先用函数struct创建空结构体,然后增加字段并赋值。没有赋值的字段为空数组。
    例1.1 用结构体patient存储患者的电子病历,包括姓名(name)、账单(billing)、检查(test)三个字段。
    下面的MATLAB代码生成结构体patient,包含两个患者的完整记录,第三个患者的记录不完整,空的字段为空数组。结果如图1.1所示。
    patient(1).name='John Doe';
    patient(1).billing=127.00;
    patient(1).test=[79,75,73;180,178,177.5;220,210,205];
    patient(2).name='Ann Lane';
    patient(2).billing=28.50;
    patient(2).test=[68,70,68;118,118,119;172,170,169];
    patient(3).name='New Name';
    >>whos
    Name Size Bytes Class Attributes
    patient 1x3 1200 struct
    图1.1 结构体数组patient
    结构体中的数据有两种组织形式,一种是平面组织形式(plane organization),另一种是按元素或记录的组织形式(element-by-element organization),例如,例1.1中的patient就是按患者记录的组织形式。采用哪种组织形式取决于如何读取数据、大数据集是否受到存储器的限制。平面组织形式容易读取每个字段的所有值,按元素或记录的组织形式则容易获取每个元素或记录的所有信息。创建结构体时,MATLAB将有关结构体的元素(记录)和字段信息存储在数组头文件(array header)中。在数据相同的情况下,元素和字段多的结构体比简单的结构体要求更多的存储空间。结构体的存储并不需要一个完全连续的存储空间,但每个字段要求连续的存储空间。
    例1.2 创建红绿蓝(red green blue,RGB)彩色图像结构体Img。
    下面的MATLAB代码首先读入4个RGB彩色图像,然后创建结构体Img,包含red、green、blue 3个字段。
    I1=imread('lena_color_256.tif');
    I2=imread('mandril_color.tif');
    I3=imread('kodim01.png');
    I4=imread('kodim02.png');
    Img(1).red=I1(:,:,1);
    Img(1).green=I1(:,:,2);
    Img(1).blue=I1(:,:,3);
    Img(2).red=I2(:,:,1);
    Img(2).green=I2(:,:,2);
    Img(2).blue=I2(:,:,3);
    Img(3).red=I3(:,:,1);
    Img(3).green=I3(:,:,2);
    Img(3).blue=I3(:,:,3);
    Img(4).red=I4(:,:,1);
    Img(4).green=I4(:,:,2);
    Img(4).blue=I4(:,:,3);
    >>whos
    Name Size Bytes Class Attributes
    I1 256x256x3 196608 uint8
    I2 512x512x3 786432 uint8
    I3 512x768x3 1179648 uint8
    I4 512x768x3 1179648 uint8
    Img 1x4 3343872 struct
    结构体Img包含4个结构数组,每个结构数组包含red、green、blue 3个字段,表示彩色图像的红、绿、蓝3个颜色的图像,如图1.2所示。
    图1.2 结构体数组Img
    表1.1给出了结构体数组操作的相关函数名称和功能说明。
    表1.1 结构体数组操作函数及功能
    1.1.2 元胞数组
    元胞数组是用元胞(cell)数据容器进行数据索引的一种数据类型,每个元胞可以包含任意类型的数据。元胞数组通常包含字符向量列表,或字符串与数字组合,或不同大小的数值型数组。元胞引用采用圆括号()包含下标的方式实现,元胞内容的读取则采用大括号{}索引的方式。通过元胞赋值可以增加新的元胞,采用给元胞赋值空数组的方式可以删除元胞,还可以整行或整列删除元胞。
    元胞数组的创建可以采用大括号{}算子或采用cell函数实现。例如,下面的语句创建元胞数组myCell。
    myCell={1,2,3;'text',rand(5,10,2),{11;22;33}};%创建2×3元胞数组
    >>myCell
    myCell=
    2×3 cell 数组
    {[ 1]} {[ 2]} {[ 3]}
    {'text'} {5×10×2 double} {3×1 cell}
    >>myCell{2,1}
    ans=
    'text'
    >>myCell(2,1)
    ans=
    1×1 cell 数组
    {'text'}
    >>s=myCell{2,1};
    >>s(1,1)
    ans=
    't'
    >>myCell{1,1}
    ans=
    1
    又如,下面的语句创建一个多维的空元胞数组。
    emptyCell=cell(3,4,2);%创建3×4×2的元胞数组
    >>emptyCell=cell(3,4,2)
    3×4×2 cell 数组
    emptyCell(:,:,1)=
    {0×0 double} {0×0 double} {0×0 double} {0×0 double}
    {0×0 double} {0×0 double} {0×0 double} {0×0 double}
    {0×0 double} {0×0 double} {0×0 double} {0×0 double}
    emptyCell(:,:,2)=
    {0×0 double} {0×0 double} {0×0 double} {0×0 double}
    {0×0 double} {0×0 double} {0×0 double} {0×0 double}
    {0×0 double} {0×0 double} {0×0 double} {0×0 double}
    元胞数组操作函数及功能如表1.2所示。
    表1.2 元胞数组操作函数及功能
    元胞数组不需要完全连续的存储空间,但每个元胞需要连续的存储空间。存储空间预分配可以采用cell函数或给*后一个元胞分配空数组。例如,C=cell(25,50)与C{25, 50}=[]等效,MATLAB将为一个25×50的元胞数组创建头文件。
    1.1.3 表与时间表
    表是适用于列向数据或表格数据的一种数据类型,在文本文件或电子表中以列的形式存储数据。表由行和列向变量组成,每个变量可以有不同的数据类型和规模,**的限制是每个变量的行数必须相同。表的索引可以用圆括号()或大括号{},前者返回子表,后者可以提取表的内容,如数值数组。另外,还可以用名称引用变量和行。
    表的创建可以用函数table实现,也可以从文件直接创建表。
    例1.3 用table函数创建一个包含两个变量和两行的表,并指定行名称。
    T=
    table([10;20],{'M';'F'},'VariableNames',{'Age','Gender'},
    'RowNames',{'P1','P2'})
    T=
    2×2 table
    Age Gender
    ___ ______
    P1 10 'M'
    P2 20 'F'
    这是一个2×2的表,变量名为年龄(Age)和性别(Gender),行名为P1和P2。创建表时也可以用默认的变量名,然后通过表属性修改变量名。例如:
    T=table([10;20],{'M';'F'});
    T.Properties.VariableNames={'Age','Gender'}
    例1.4 创建一个表,加入行名,并用行名访问行。可用下列MATLAB语句实现。
    load patients %加载患者数据库patients
    T=table(Gender,Age,Height,Weight,Smoker,Systolic,Diastolic);%创建表并指定变量名(性别,年龄,身高,体重,烟民,收缩压,舒张压)
    T.Properties.RowNames=LastName;%行名为患者的姓
    subtable=head(T,4);%显示表的前4行
    >>subtable=head(T,4)
    subtable=
    4×7 table
    Gender Age Height Weight Smoker Systolic Diastolic
    ______ ___ ______ ______ ______ ________ _______
    Smith 'Male' 38 176 71 true 124 93
    Johnson 'Male' 43 163 69 false 109 77
    Williams 'Female' 38 131 64 false 125 83
    Jones 'Female' 40 133 67 false 117 75
    表操作
    目录
    目录 第1章 MATLAB编程基础 1 1.1 特殊数据类型 1 1.1.1 结构体 1 1.1.2 元胞数组 4 1.1.3 表与时间表 5 1.1.4 类别数组 8 1.1.5 函数句柄 9 1.1.6 Map容器 10 1.1.7 时间序列 11 1.2 特殊矩阵与稀疏矩阵 12 1.3 随机数的产生 13 1.4 数据导入与分析 14 1.4.1 数据导入与导出 14 1.4.2 大文件与大数据 15 1.4.3 数据预处理 16 1.4.4 统计描述 16 1.4.5 可视化探索 17 1.5 脚本文件与函数文件编写 23 1.5.1 控制流语句 23 1.5.2 脚本文件 23 1.5.3 实时脚本文件 24 1.5.4 函数文件 26 1.5.5 程序调试 27 第2章 MATLAB**软件开发 28 2.1 面向对象编程 28 2.1.1 类定义关键字和函数 28 2.1.2 创建简单的类 28 2.2 调用外部函数 34 2.2.1 调用MEX文件函数 34 2.2.2 调用C共享库函数 35 2.2.3 调用Java库 38 2.2.4 调用.NET库 40 2.2.5 调用COM对象 41 2.2.6 调用Python库 43 2.3 调用Web服务 45 2.4 功能与性能测试 49 2.4.1 单元测试 50 2.4.2 性能测试 51 2.5 性能与内存 53 2.5.1 代码测试分析 54 2.5.2 性能提升方法 55 第3章 MATLAB应用程序设计 57 3.1 App设计工具 57 3.2 交互式开发环境GUIDE 62 3.2.1 组件创建和布局 63 3.2.2 对话框函数 64 3.2.3 代码编写 65 3.3 编程工作流 67 第4章 Simulink仿真初步 69 4.1 Simulink基本操作 69 4.1.1 启动Simulink 69 4.1.2 一个简单的Simulink模型 70 4.2 Simulink模块库 76 4.2.1 Simulink通用模块库 76 4.2.2 数字信号处理系统工具箱 81 4.2.3 通信系统工具箱 86 4.2.4 控制系统工具箱 99 4.3 Simulink模型创建 100 4.3.1 Simulink模型编辑环境 100 4.3.2 模型创建与编辑 100 4.4 子系统创建 104 4.5 用MATLAB创建Simulink模型 106 第5章 信号处理系统仿真 108 5.1 信号产生、处理和分析 108 5.1.1 信号运算 108 5.1.2 信号产生 112 5.1.3 信号输入与输出 116 5.1.4 信号显示与保存 119 5.2 滤波器设计、分析和实现 125 5.2.1 滤波器设计 125 5.2.2 滤波器分析 134 5.3 信号变换与频谱分析 139 5.3.1 DCT、FFT、HDL FFT及其逆变换 139 5.3.2 频谱分析 142 5.4 信号处理系统仿真实例 149 第6章 通信系统仿真 161 6.1 通信工具箱初步 161 6.1.1 简单的通信系统仿真 161 6.1.2 可视化与测量 164 6.2 端到端的仿真 169 6.2.1 信源与信宿 169 6.2.2 信源编码 170 6.2.3 误码检测与纠错 172 6.2.4 信号序列运算 175 6.2.5 块交织与卷积交织 175 6.2.6 数字基带调制 178 6.2.7 模拟基带与通带调制 181 6.2.8 信道均衡 182 6.3 信道建模和射频损耗 185 6.3.1 白噪声信道 187 6.3.2 衰落信道 187 6.3.3 MIMO信道 188 6.4 测量、可视化与分析 188 6.4.1 误码率 189 6.4.2 相邻信道功率比 189 6.4.3 调制误码率 190 6.4.4 误差向量幅度 190 6.5 MIMO信道仿真 192 6.5.1 MIMO多径衰落信道 192 6.5.2 空间多路复用 202 6.5.3 正交空时块编码器 207 第7章 控制系统仿真 211 7.1 线性时不变系统模型 211 7.1.1 基本模型 212 7.1.2 连续时间模型 212 7.1.3 离散时间模型 217 7.1.4 MIMO模型 218 7.2 可调LTI模型 219 7.3 具有时延的线性模型 221 7.4 LTI控制系统分析 222 7.5 控制系统设计和调整 226 7.5.1 PID控制器调整 226 7.5.2 经典控制设计 227 7.5.3 状态-空间控制设计与估计 228 7.6 模型验证 230 7.7 控制系统仿真实例 232 第8章 Simulink设计与优化 243 8.1 Simulink S-Function建模 243 8.1.1 S-Function基础 243 8.1.2 C/C++ S-Function 246 8.1.3 MATLAB S-Function 248 8.1.4 S-Function模块 250 8.1.5 S-Function实现 259 8.2 基于组件的建模 271 8.2.1 创建子系统 271 8.2.2 自定义模型 272 8.2.3 需求追溯 273 8.2.4 项目管理 274 8.3 模型优化 274 8.3.1 性能自动优化 274 8.3.2 仿真加速 275 8.3.3 性能手动优化 275 8.4 建模指南 276 8.4.1 MAAB控制算法建模 276 8.4.2 高完整性系统建模 277 8.4.3 代码生成 277 8.4.4 大型建模 277 8.4.5 信号处理建模 277 8.4.6 模型升级 278 8.5 新模块创建 278 8.5.1 模块封装 278 8.5.2 自定义MATLAB算法 282 主要参考文献 283 彩图

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外