信号生成和可视化——周期性/非周期性波形

这篇具有很好参考价值的文章主要介绍了信号生成和可视化——周期性/非周期性波形。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

信号生成和可视化——周期性/非周期性波形

目录

信号生成和可视化——周期性/非周期性波形

周期性波形

sawtooth 函数生成锯齿波

square 函数生成方波

非周期性波形

tripuls、rectpuls 和 gauspuls 函数

gauspuls 函数使用指定时间、中心频率和小数带宽生成高斯调制正弦脉冲。

sinc 函数计算输入向量或矩阵的数学正弦函数

扫频波形

chirp 函数生成线性或二次、凸和凹二次 chirp

脉冲序列

pulstran 函数生成脉冲序列波

Dirichlet 函数

另请参阅


此示例说明如何使用 Signal Processing Toolbox™ 中提供的函数生成广泛使用的周期和非周期性波形、扫频正弦波和脉冲序列。尝试此示例Copy Command  Copy Code

周期性波形

除了 MATLAB® 中的 sin 和 cos 函数外,Signal Processing Toolbox™ 还提供其他函数(如 sawtooth 和 square)来生成周期性信号。

sawtooth 函数生成锯齿波

sawtooth 函数生成锯齿波,波峰在 ±1,周期为 2π。可选宽度参数以 2π 的小数倍来指定信号最大值出现的位置。

square 函数生成方波

square 函数生成周期为 2π 的方波。可选参数指定占空比,即信号为正的周期的百分比。

% % 以 10 kHz 的采样率生成 1.5 秒的 50 Hz 锯齿波。对一个方波进行重复计算。
fs = 10000; %以10kHz的采样率
t = 0:1/fs:1.5;
x1 = sawtooth(2*pi*50*t); %锯齿波
x2 = square(2*pi*50*t); %方波

subplot(2,1,1) % subplot(m,n,p) 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。
plot(t,x1)%二维线图
axis([0 0.2 -1.2 1.2])%设置坐标轴范围x[0,0.2], y[-1.2,1.2]
xlabel('Time (sec)')
ylabel('Amplitude') 
title('Sawtooth Periodic Wave')

subplot(2,1,2)
plot(t,x2)
axis([0 0.2 -1.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Square Periodic Wave')

信号生成和可视化——周期性/非周期性波形

% 使用 dutycycle 函数验证方波的占空比是否为指定值。
% 不带输出参数调用该函数来绘制波形、中间参考瞬时电平的位置、相关联的参考电平、状态电平以及相关联的状态上下边界。
figure
dc = dutycycle(x2,fs);
dc = dc(1);
% disp(dc);%输出dc的值
fprintf('the value of dc is%6.2f\n',dc)%输出dc的值
dutycycle(x2,fs);
xlim([0 0.2])

信号生成和可视化——周期性/非周期性波形

非周期性波形

tripulsrectpuls 和 gauspuls 函数

为了生成三角形、矩形和高斯脉冲,工具箱提供了 tripulsrectpuls 和 gauspuls 函数。

tripuls 函数生成以 t = 0 为中心、默认宽度为 1 的采样非周期性单位高度三角形脉冲。

rectpuls 函数生成以 t = 0 为中心、默认宽度为 1 的采样非周期性单位高度矩形脉冲。非零幅值的区间定义为在右侧开放:rectpuls(-0.5) = 1,而 rectpuls(0.5) = 0

% % 生成 2 秒的三角形脉冲,采样率为 10 kHz,宽度为 20 ms。对一个矩形脉冲进行重复计算。
fs = 10000;
t = -1:1/fs:1;
x1 = tripuls(t,20e-3);
x2 = rectpuls(t,20e-3);

figure
subplot(2,1,1)
plot(t,x1)
axis([-0.1 0.1 -0.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Triangular Aperiodic Pulse')

subplot(2,1,2)
plot(t,x2)
axis([-0.1 0.1 -0.2 1.2])
xlabel('Time (sec)')
ylabel('Amplitude')
title('Rectangular Aperiodic Pulse')

信号生成和可视化——周期性/非周期性波形

gauspuls 函数使用指定时间、中心频率和小数带宽生成高斯调制正弦脉冲。

sinc 函数计算输入向量或矩阵的数学正弦函数

sinc 函数计算输入向量或矩阵 x 的数学正弦函数。作为时间或空间的函数,sinc 函数是以零为中心、宽度为 2π 并具有单位高度的频率的矩形脉冲的傅里叶逆变换:

信号生成和可视化——周期性/非周期性波形

% 生成带宽为 60%、采样率为 1 MHz 的 50 kHz 高斯 RF 脉冲。
% 当包络比峰值低 40 dB 时,截断脉冲。
tc = gauspuls('cutoff',50e3,0.6,[],-40); 
t1 = -tc : 1e-6 : tc; 
y1 = gauspuls(t1,50e3,0.6);
% 为一个线性间距向量生成正弦函数:
t2 = linspace(-5,5);
y2 = sinc(t2);

figure
subplot(2,1,1)
plot(t1*1e3,y1)
xlabel('Time (ms)')
ylabel('Amplitude')
title('Gaussian Pulse')

subplot(2,1,2)
plot(t2,y2)
xlabel('Time (sec)')
ylabel('Amplitude')
title('Sinc Function')

信号生成和可视化——周期性/非周期性波形

扫频波形

chirp 函数生成线性或二次、凸和凹二次 chirp

工具箱还提供生成扫频波形的函数,如 chirp 函数。两个可选参数以度为单位指定替代扫描方法和初始相位。

chirp 生成线性、对数或二次扫频正弦信号。可选参数指定替代扫描方法。可选参数允许以度数指定初始相位。

下面是使用 chirp 函数生成线性或二次、凸和凹二次 chirp 的几个示例。

% 生成线性 chirp。

t = 0:0.001:2; % 2 secs @ 1kHz sample rate

ylin = chirp(t,0,1,150); % Start @ DC, cross 150Hz at t=1sec
% 绘制 chirp 的频谱图。指定相邻窗段之间的重叠为 90%。

figure
pspectrum(ylin,t,'spectrogram','OverlapPercent',90)


% 生成二次 chirp。

t = -2:0.001:2; % +/-2 secs @ 1kHz sample rate

yq = chirp(t,100,1,200,'q'); % Start @ 100Hz, cross 200Hz at t=1sec

% 计算并显示 chirp 的频谱图。

figure

subplot(2,1,1)

spectrogram(ylin,256,250,256,1E3,'yaxis')

title('Linear Chirp')

subplot(2,1,2)

spectrogram(yq,128,120,128,1E3,'yaxis')

title('Quadratic Chirp')

信号生成和可视化——周期性/非周期性波形

% 生成凸二次 chirp。

t = -1:0.001:1; % +/-1 second @ 1kHz sample rate

fo = 100;

f1 = 400; % Start at 100Hz, go up to 400Hz

ycx = chirp(t,fo,1,f1,'q',[],'convex');

% 生成凹二次 chirp。

t = -1:0.001:1; % +/-1 second @ 1kHz sample rate

fo = 400;

f1 = 100; % Start at 400Hz, go down to 100Hz

ycv = chirp(t,fo,1,f1,'q',[],'concave');

% 计算并显示 chirp 的频谱图。

figure

subplot(2,1,1)

spectrogram(ycx,256,255,128,1000,'yaxis')

title('Convex Chirp')

subplot(2,1,2)

spectrogram(ycv,256,255,128,1000,'yaxis')

title('Concave Chirp')

信号生成和可视化——周期性/非周期性波形

另一个函数生成器是 vco(压控振荡器),它生成以输入向量确定的频率振荡的信号。输入向量可以是三角形、矩形或正弦波等。

% 生成以 10 kHz 采样的 2 秒信号,其瞬时频率为三角形。对一个矩形进行重复计算。
fs = 10000;
t = 0:1/fs:2;
x1 = vco(sawtooth(2*pi*t,0.75),[0.1 0.4]*fs,fs);
x2 = vco(square(2*pi*t),[0.1 0.4]*fs,fs);

% 绘制生成的信号的频谱图。
figure
subplot(2,1,1)
spectrogram(x1,kaiser(256,5),220,512,fs,'yaxis')
title('VCO Triangle')

subplot(2,1,2)
spectrogram(x2,256,255,256,fs,'yaxis')
title('VCO Rectangle')

信号生成和可视化——周期性/非周期性波形

脉冲序列

pulstran 函数生成脉冲序列波

要生成脉冲序列,您可以使用 pulstran 函数。

% 构造一个 2 GHz 矩形脉冲序列,它以 7.5 ns 的间距和 100 GHz 的速率采样。
fs = 100E9;                    % sample freq
D = [2.5 10 17.5]' * 1e-9;     % pulse delay times
t = 0 : 1/fs : 2500/fs;        % signal evaluation time
w = 1e-9;                      % width of each pulse
yp = pulstran(t,D,@rectpuls,w);

% 生成 10 kHz、50% 带宽的周期性高斯脉冲信号。脉冲重复频率为 1 kHz,采样率为 50 kHz,
% 脉冲序列长度为 10 毫秒。重复幅值每次应按 0.8 衰减。
% 使用函数句柄指定生成器函数。
T = 0 : 1/50e3 : 10e-3;
D = [0 : 1/1e3 : 10e-3 ; 0.8.^(0:10)]';
Y = pulstran(T,D,@gauspuls,10E3,.5);

figure
subplot(2,1,1)
plot(t*1e9,yp);
axis([0 25 -0.2 1.2])
xlabel('Time (ns)')
ylabel('Amplitude')
title('Rectangular Train')

subplot(2,1,2)
plot(T*1e3,Y)
xlabel('Time (ms)')
ylabel('Amplitude')
title('Gaussian Pulse Train')

信号生成和可视化——周期性/非周期性波形

Dirichlet 函数

diric 函数计算输入向量或矩阵 x 的 Dirichlet 函数,有时称为周期性正弦函数或混叠正弦函数。Dirichlet 函数由下式定义

信号生成和可视化——周期性/非周期性波形

其中 N 是用户指定的正整数。如果 N 为奇数,则 Dirichlet 函数的周期为2π;如果 N 为偶数,则其周期为 4π。此函数的幅值是 1/N 乘以包含 N 个点的矩形窗的离散时间傅里叶变换的幅值。

要为 N=7 和 N=8 绘制 0 和 4π 之间的 Dirichlet 函数,使用:

figure
x = linspace(0,4*pi,300);

subplot(2,1,1)
plot(x/pi,diric(x,7))
title('N = 7')

subplot(2,1,2)
plot(x/pi,diric(x,8))
title('N = 8')
xlabel('x / \pi')

信号生成和可视化——周期性/非周期性波形

另请参阅

chirp | gauspuls | pulstran | rectpuls | sawtooth | sin | sinc | square | tripuls | vco

【我是小蜜蜂,知识的搬运工!】文章来源地址https://www.toymoban.com/news/detail-419027.html

到了这里,关于信号生成和可视化——周期性/非周期性波形的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • flask python 设置定时任务 flask 周期性执行任务方案

    flask 通常使用 flask_apscheduler 框架设计定时任务,flask_apscheduler 功能很全面,能按设定的时间规则执行任务,可以持久化到各类数据库(mysql,redis,mongodb),实现对定时任务增、删、改、查等操作。 方法三:通过调用 flask_apscheduler 的 api (推荐) 实例对象 scheduler 拥有增、删

    2024年01月21日
    浏览(35)
  • Abaqus CAE 2018插件使用详解:基于周期性边界条件定义3D几何模型的实践指南**

    注:这篇文章是为了帮助读者更好地理解和使用Abaqus CAE 2018的插件来定义周期性边界条件。所提供的信息是基于我个人的理解和实践,如有不准确或者有更好的建议,欢迎读者们指正和交流。 一、 引言 在进行无限或半无限域建模时,周期性边界条件可为我们提供了一种模拟

    2024年02月11日
    浏览(36)
  • 使用Dream3D和MATLAB从综合构建微结构到创建具有周期性边界条件的Abaqus输入文件的一站式解决方案

    声明 :本文中的所有内容仅供学术研究和讨论,不保证完全无误。对于使用本文内容可能产生的任何后果,作者不承担任何责任。希望大家在使用时,结合自己的实际情况进行酌情调整。 当我们面临材料力学问题,包括材料的疲劳、断裂和塑性等行为的仿真时,一个常见的

    2024年02月10日
    浏览(51)
  • 为什么RIP使用UDP,OSPF使用IP,而BGP使用TCP?为什么RIP周期性地和邻站交换路由信息而BGP却不这样做?

    RIP只和邻站交换信息,使用UDP无可靠保障,但开销小,可以满足RIP要求; OSPF使用可靠的洪泛法,直接使用IP,灵活、开销小; BGP需要交换整个路由表和更新信息,TCP提供可靠交付以减少带宽消耗; RIP使用不保证可靠交付的UDP,因此必须不断地(周期性地)和邻站交换信息才

    2024年02月02日
    浏览(44)
  • 【正点原子STM32】RTC实时时钟(RTC方案、BCD码、时间戳、RTC相关寄存器和HAL库驱动、RTC基本配置步骤、RTC基本驱动步骤、时间设置和读取、RTC闹钟配置和RTC周期性自动唤醒配置)

    一、RTC简介 二、STM32 RTC框图介绍 2.1、STM32 F1 RTC结构框图 2.2、STM32 F4 / F7 / H7 RTC结构框图 三、RTC相关寄存器介绍 3.1、RTC基本配置步骤 3.2、RTC相关寄存器(F1) 3.3、RTC相关寄存器(F4 / F7 / H7) 四、RTC相关HAL库驱动介绍 4.1、RTC相关HAL库驱动(F1) 4.2、RTC相关HAL库驱动(F4 / F7 /

    2024年03月27日
    浏览(57)
  • 再谈 QtDesigner 可视化连接信号 槽

    在VS20xx +Qtx.xx 开发模式下,打开ui文件,所用的英文 QT Designer工具,没有转到槽函数的功能 ,不如QtCreator自带的QtDesigner功能齐全,只能Editor已有的信号槽。 而在QtCreator中右击某个控件 有\\\"转到槽\\\"功能 ,就会在.h和.cpp文件中生成我们的自定义槽函数void on_openButton_clicked() 解

    2024年02月15日
    浏览(23)
  • 时序分解 | MATLAB实现基于SVD奇异值分解的信号分解分量可视化

    效果一览 基本介绍 SVD分解重构算法,MATLAB程序,奇异值分解 (Singular Value Decomposition)是一种常见的矩阵分解方法,用于将矩阵分解成三个矩阵的乘积。在信号处理中,SVD 可以用于特征提取、信号降维、图像压缩等方面。SVD 的一个重要应用是主成分分析 (PCA),可以用于提取数

    2024年02月11日
    浏览(38)
  • 时序分解 | MATLAB实现基于SSA奇异谱分析的信号分解分量可视化

    效果一览 基本介绍 奇异谱分解奇异谱分析SSA 可直接替换txt数据运行 Matlab 1.分解效果图 ,效果如图所示,可完全满足您的需求~ 2.直接替换txt数据即可用 适合新手小白 注释清晰~ 3.附赠案例数据 直接运行main一键出图~ 程序设计 完整源码和数据获取方式:MATLAB实现基于S

    2024年02月09日
    浏览(39)
  • 时序分解 | MATLAB实现MVMD多元变分模态分解信号分量可视化

    效果一览 基本介绍 MVMD多元变分模态分解 可直接替换 Matlab语言 1.算法新颖小众,用的人很少,包含分解图,效果如图所示,适合作为创❤️~ 2.直接替换数据即可用 适合新手小白 注释清晰~ 3.附赠测试数据 直接运行main一键出图~ 程序设计 完整源码和数据获取方式:私信

    2024年02月09日
    浏览(23)
  • postman生成可视化报告

    下载nodejs安装包,下载地址Node.js (nodejs.org) 打开dos命令行,输入node -v ,显示版本号安装成功(以下操作均在node安装目录下打开) 输入npm -v查看npm是否正常,显示版本号安装成功 安装newman,输入npm install -g newman,输入newman -v 显示版本号安装成功 安装newman-reporter-html,安装方

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包