当前位置:首页 > EDA > 电子设计自动化
[导读]信号处理工程师在开发工作的所有阶段都使用 MATLAB® 和 Simulink® — 从分析信号和探索算法,到评估设计实现的权衡,最终构建实时信号处理系统。

信号处理工程师在开发工作的所有阶段都使用 MATLAB® 和 Simulink® — 从分析信号和探索算法,到评估设计实现的权衡,最终构建实时信号处理系统。MATLAB 和 Simulink 可提供:

分析和预处理时序数据、频谱和时频分析以及信号测量所用的内置函数和应用程序

设计、分析和实现数字滤波器(FIR 和 IIR)所用的应用程序和算法,从基本的 FIR 和 IIR 滤波器,到自适应、多速率和多级设计

使用程序和模块图组合对信号处理系统建模和仿真的环境

对定点行为建模并自动生成 C/C++ 或 HDL 代码,进而部署在嵌入式处理器、FPGA 和 ASIC 上的各种功能

使用机器学习和深度学习工作流程在信号和传感器数据上开发预测模型的工具MATLAB 和 Simulink 可帮助您使用内置应用程序分析信号,可视化和预处理时域、频域和时频域中的信号,无需手工编写代码即可检测规律和趋势。可以使用特定领域算法跨不同的应用(如通信、雷达、音频、医疗设备和物联网)表征信号和信号处理系统。

设计和分析数字滤波器,从基本的单速率低通或高通滤波器,到更高级的 FIR 和 IIR 设计,包括多速率、多级和自适应滤波器。能够可视化幅值、相位、群延迟和脉冲响应,还可以评估滤波器的稳定性和相位线性等性能。分析和仿真滤波器设计,以评估不同内部结构和定点数据类型的影响。这些设计还可以生成嵌入式软件或硬件实现。对于高级和特定应用的使用案例,可以利用预先设计的滤波器和滤波器组,如基于小波的滤波器组、感知间隔的滤波器组或信道化。

在设计信号处理系统时,可以使用模块图和基于语言的编程组合。使用 Simulink 对信号处理系统应用基于模型的设计,进行建模、仿真、早期验证和代码生成。利用模块库配合特定应用的算法,开发基线信号处理,音频、模拟混合信号和 RF、有线和无线通信以及雷达系统。在仿真过程中使用虚拟示波器(包括频谱和逻辑分析仪、星座图和眼图)可视化实时信号。

1.调用函数fourier和ifourier之前,需用syms命令对所用到的变量进行说明,即将这些变量说明成符号变量。

clear all

syms t;

f=t*exp(-abs(t));

subplot(121);ezplot(f);

F=fourier(f);

subplot(122);ezplot(abs(F));

2.采用fourier和ifourier得到的返回函数,仍是符号表达式。若作图,应用ezplot而不是plot。若返回函数有如狄拉克函数 δ(t) 等。则用ezplot也无法作图。

clear all

syms t w;

F=pi*exp(-abs(w));

subplot(121);ezplot(abs(F));

f=ifourier(F,t);%因为返回是关于x的函数,所以指定返回t的函数。

subplot(122);ezplot(f);

plot是绘制二维图形,并且是x,y的表达式是已知的或者是形如y=f(x)这样确切的表达式,而ezplot是画出形如f(x,y)=0这种隐函数图形。

3.严格的说,只有非周期信号才有Fourier变换。(不满足绝对可积)但若满足Dirichlet条件,可展开为Fourier级数。 ()X(kΩ0)是k次谐波处的Fourier系数。 ()X(kΩ0) 是谐波幅度的概念, ()X(jΩ) 是频谱密度的概念。

4.离散时间信号的Fourier变换,两个特点:

(1)变换是用于无限长的序列;

(2)变换的结果是自变量 ω 的连续函数。

*两个序列的循环卷积序列:

clear all

h=[6 3 4 2 1 -2];%产生信号序列

x=[3 2 6 7 -1 -3];

h1=fliplr(h);

H=toeplitz(h,[h(1) h1(1:5)]);

y=H*x';

H=fft(h);

X=fft(x);

Y=H.*X;

y1=ifft(Y);

subplot(211);stem(y);title('直接计算')

subplot(212);stem(y1);title('DFT计算')

*DFT对应循环卷积而不对应线性卷积。若用DFT进行线性卷积,需对两长度分别为M,L的序列都扩展为长度为M+L-1的新序列。例子及程序如下:

clear all

n1=0:20;

n2=0:10;

%%直接法

h=sinc(0.2*n1);%两序列

x=exp(-0.2*n2);

y=conv(x,h);

%%DFT法

h1=[h zeros(1,length(x)-1)];

x1=[x zeros(1,length(h)-1)];

H1=fft(h1);

X1=fft(x1);

Y1=H1.*X1;

y1=ifft(Y1);

subplot(211);stem(y);title('直接计算')

subplot(212);stem(y1);title('DFT计算')

5.加性高斯白噪声(AWGN)表现为信号围绕平均值的一种随机波动过程。加性高斯白噪声的均值为0,方差为噪声功率的大小。一般情况下,噪声功率越大,信号的波动幅度越大,接收端接收到的信号的误比特率就越高。

MATLAB 作为一种科学计算软件,具有如下优点。

1) 强大的数学计算能力特别是矩阵运算能力

与 C/C++、Java 等编程语言不同,MATLAB 是将数组和矩阵作为基本的操作单元来对待的。

在 C/C++ 等编程语言中,加法运算符“+”在最基础的层面上支持的仅仅是单个标量的加法运算。尽管 C++ 等面向对象的编程语言可以通过操作符重载来定义更为复杂的“+”运算,但是这需要编程者额外的编程工作,或者是其他库的支持。而 MATLAB 编程语言直接将数组和矩阵这样的批量数据的组织形式作为基本的处理单元,因此,在 MATLAB 中,“+”表示的就是整个数组和矩阵之间的加法,这是 MATLAB 内生的特性,不需要编程者额外进行任何工作,从而极大地简化了数组和矩阵运算的编程任务,也使得其表达形式与数学公式更为一致,同时也更为简明清晰。

不仅如此,MATLAB 数组和矩阵的元素还可以取复数值而不限于实数值,从而使复数相关的运算也变得十分易用。

此外,MATLAB 从最初版开始就关注矩阵运算,因此其矩阵运算包括特征根与特征矢量的求取、矩阵求逆等常用而核心的运算,都具有极高的运行效率。实际上,MATLAB 在矩阵相关运算方面,一直都是各主要编程语言中最为高效者之一。

2) 语言特性简洁,编程效率高

MATLAB 编程语言本身的特性简洁明了,没有引入太多复杂的特性,这一点与 C++ 这样面向对象的编程语言相比显得尤为突出。

此外,MATLAB 中的数组和矩阵实际上都是“动态”的,因此,在内存管理方面编程者几乎不需要负担多少工作。尽管在空间和时间效率上不一定能保证是最优的,但是不用进行内存管理,将明显减少程序发生内存相关错误的可能,从而使得编程者的代码编写和调试工作变得更为简单和轻松,编程效率可以显著提高,编程者能够将更多精力集中在如何解决实际问题,而不是陷在编程语言本身的技术细节之中。

同时,MATLAB 将数组和矩阵作为基本操作单元的处理方式,也使得与批量数据的运算和处理有关的程序变得更为简洁,编程工作量更少。在掌握了 MATLAB 的矢量化运算技巧之后,在 C语言或 Java 语言中需要一层甚至是多层嵌套的循环才能完成的运算,在 MATLAB 中也许仅需要寥寥数行就能实现。

3) 交互性好,使用方便

MATLAB 又被称为“草稿纸式的计算软件”,它的基本使用方式是命令行式的:在命令窗口中输入一条命令,马上就能执行该命令,并且根据用户的需要可以显示计算的结果。这条命令可以本身是执行一项复杂、完整的计算任务的函数调用,也可以仅仅是一个复杂处理过程中的中间步骤。而利用 C/C++ 或 Java 等编程语言编程时,在编写了完整或部分的代码后,需要经过编译、链接等操作产生可执行程序,然后才能够实际运行和看到结果。

而且 MATLAB 的不同程序间的互相调用也十分方便和简单。它提供的每个 M 文件既是一个函数模块,也是一个完整的可执行程序。因此,它们既可以单独用来执行一项特定的任务,也可以组合起来构成更为复杂的程序。以 MATLAB 工具箱为例,每个工具箱通常由存放在特定目录下的一系列M函数构成,这个目录实际上起到了在其他编程语言中函数库的作用。

4) 绘图能力强大,能够利用数据可视化有效辅助研究分析

利用 MATLAB 可以方便地绘制多种常用的二维图形和三维图形,如曲线图、散点图、饼图、柱状图、三维曲线/三维曲面图、伪彩色图等。这些图形不但提供大量数据的直观表示,而且更便于揭示数据间的内在关系。

5) 为数众多的工具箱

MATLAB 除了基本的数学计算功能,还以工具箱的形式提供了大量针对特定功能和特定应用领域的工具箱。

例如,在 MATLAB R2020a 中,就提供了包括曲线拟合工具箱、最优化工具箱、符号数学工具箱、统计与机器学习工具箱、深度学习工具箱、强化学习工具箱、并行计算工具箱,以及针对信号处理、图像处理与机器视觉、控制系统、测试测量、射频与混合信号、无线通信、自主系统、FPGA 等硬件开发、汽车、航空航天、计算金融学和计算生物学等特定应用领域的工具箱,多达 60 余个。此外,还包括用于仿真和代码生成等功能的软件和函数或模块库,数量也多达数十个。这些工具箱直接为使用者提供了相关领域的大量较为成熟的算法,从而使得研究者与开发者能够迅速在这些已有成果的基础上,构建自己的解决方案或新的算法。

6) 开放性好,便于扩展

大量 MATLAB 工具箱函数都是以 M 文件的形式提供的,因此,其具体实现都是公开的,而且用户可根据自己的需要加以修改。这些公开的代码不仅为用户对其进一步改进提供了很好的基础,而且研究者还能够通过阅读这些代码,更好地理解相关的算法。

以 M 文件为基本模块的工具箱组织方式,也使得用户能够构建自己的工具箱,或进一步搭建起基于 MATLAB 的二次应用环境。

MATLAB 的开放性还体现在它与其他编程语言和工具软件的交互上。

MATLAB 提供了 C语言和 FORTRAN 语言的 API 函数库,开发者可以利用这些 API 函数,使用 C 语言或 FORTRAN 语言来实现有关算法,然后把它们编译为可在 MATLAB 中执行的 MEX 函数模块。

MATLAB 还通过 COM 接口对外提供计算服务,其他的应用程序可以通过该 COM 接口调用 MATLAB 的计算功能,从而使得 MATLAB 可以作为一个强大的后台计算引擎来发挥作用。例如,用户可以利用 C++、VB 等语言来编写应用程序,然后在其中调用 MATLAB 来完成复杂或性能敏感的计算任务。

MATLAB 也可以对 Java 类进行操作和使用。同时,由于 MATLAB 强大的功能和已经构建起来的应用生态,不少其他的工具软件也提供了与 MATLAB 兼容的接口。例如,在 LabVIEW 中就可以利用 M 语言来编写模块以执行有关的计算功能。

7) C/C++代码生成功能

MATLAB 能自动将 M 代码转换为可靠的 C/C++ 语言代码。通过这一功能,开发者就可以利用 MATLAB 高效便捷地进行算法的实现、调试与验证,之后再自动转换为 C/C++ 代码,就能够将所实现的算法用于需要的程序中,从而极大地减少编写和调试程序的工作量。

声明:该篇文章为本站原创,未经授权不予转载,侵权必究。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭