MATLAB 您所在的位置:网站首页 matlab中的print函数 MATLAB

MATLAB

2023-04-05 19:37| 来源: 网络整理| 查看: 265

一、简介

当今计算机运算能力越来越强,各种数字化的器件越来越完善,精度也越来越高,实践中处理数字化信息的需求越来越大。数字信息处理能够带来很多的方便,比如稳定性高、方便集成、方便优化升级等等。我们在做科研的过程中也在朝着将整个系统中更多的器件进行数字化的方向努力。

自然界中大多数的信号都是模拟的,比如声音、图像等,而在计算机中处理的数据又必须是离散化的。想要在计算机中处理原本的模拟信号就要对型号进行采样和离散化,而那些计算机中处理好了的数据想要变得被人理解又要用某种方式对信号进行模拟和连续化。这就势必要求一个模拟转数字-数字转模拟的过程。

高精度的计算机可以通过大量的迭代产生近似于连续的数值结果,再加上高密度的数据,可以呈现出‘模拟’的结果。但需要注意其本质还是离散化的数值结果。从采样的角度来理解,就是当采样密度达到一定程度时,模拟信号和数字信号就近似相等了,密度越高数字信号对模拟信号的表达就越精确。

实际生活中有许多的信号,大家所熟知的如:正弦信号、方波信号、三角波信号、脉冲信号等等。在这所有的信号当中最为常用的就是正弦信号了,无论是在通信系统还是控制系统都被广泛地运用,结合如傅里叶变换、拉普拉斯变换、Z变换等,可以方便地分析和控制模拟和离散系统。

本文主要介绍如何使用MATLAB将函数离散化,更具体地说是以正弦函数为例给出用不同采样频率采样不同频率正弦信号的方法。

二、MATLAB中进行正弦函数采样

我们学过的初等函数都有相应的表达式,它们从定义上来说都是连续的。但是想要用数字信号处理的方法来应用和处理这些函数就需要对其进行离散化——采样。实际工程中这个过程采用数模转换器(ADC)来完成。那么如何在仿真ADC的功能呢?比如给定一个信号函数: x(t)=sin(t) 如何按照不同的采样频率 F_s 对其进行离散化?下面给出MATLAB中实现这一过程的代码,并通过傅里叶变换查看其频谱:

采样率Fs=5MHz,被采样频率f=100Hz,幅度amp=1的信号,采样点数为N=500点。采样过程满足采样定理Fs;2*f,因此可以看到通过采样点可以很好地还原原信号。采样结果的500点FFT,可以看出其频谱范围为Fs/2,也即采样率的一半。在100Hz处也即被采样频率处出现频率峰% 1. 采样设置 Fs=5000;% 采样频率,Hz Ts=1/Fs; % 采样时间间隔,s N=500; % 采样点数,需要足够多的采样来进行FFT查看频谱 t=0:Ts:N*Ts; % 采样时间序列 % 2. 信号设置 f=100; % 信号频率,Hz amp=1; % 信号幅度 discrete_signal=amp*sin(2*pi*f*t);% 离散化的采样信号 fig1=figure; plot(t,discrete_signal,'-') hold on scatter(t,discrete_signal,'.') xlabel('t /s') ylabel('amplitude') fft_aio1=fftshift(fft(discrete_signal))/N;% 采样结果的N点FFT f_list=linspace(0,Fs,N+1); % FFT对应的实际频率 fig2=figure; plot(f_list-Fs/2,20*log10(abs(fft_aio1)))

类似的,所有可以写出表达式的函数都可以用此方法得到其在一定采样率下的数据,理论上采样率越高采样的结果越好,但同时对器件的性能要求和资源占用也越大。实际上的采样频率往往由器件厂家提供的器件自身决定,对于常规的信号根据需求选择合适的即可。该方法的重要意义在于,基于这种模拟采样得到的数据可以作为开发硬件电路时的仿真数据源。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有