Matlab通信仿真系列——信号处理函数

news2024/12/29 14:29:49

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
本节目录

一、Matlab信号产生函数
(1)随机信号函数
(2)方波信号函数
(3)锯齿波信号函数
(4)正弦波信号函数
二、Matlab信号分析函数
(1)滤波函数filter
(2)单位抽样响应函数impz
(3)频率响应函数
(4)零极点增益函数
(5)快速傅里叶变换函数
三、Matlab源码
(1)Matlab信号产生函数源码
(2)Matlab信号分析函数源码一
(3)Matlab信号分析函数源码二

本节内容
一、Matlab信号产生函数

在进行数字信号处理仿真或设计时,需要产生随机信号、方波信号、锯齿波信号、正弦信号,以及带有加性白噪声的某种输入信号。
(1)随机信号函数
Matlab提供了两种随机信号产生函数rand(1,N)和randn(1,N)
rand——产生长度为N的在[0,1]上均匀分布的随机序列
randn——产生均值为0,方差为1的高斯随机序列,功率为1W的白噪声序列
具有其他分布特性的序列可以由这两种随机数变换产生。
(2)方波信号函数
Matlab提供了方波信号产生函数square。
两种格式square(T)和square(T,DUTY)
square(T)——对时间变量T产生周期为2π,幅值为±1的方波
square(T,DUTY)——产生指定占空比的方波,DUTY指定信号为正值的区域在一个周期T内所占的比例,取值为0-100,当DUTY为50时,产生方波信号,与square(T)函数相同
(3)锯齿波信号函数
Matlab提供的锯齿波函数sawtooth。
有两种格式sawtooth(T)和sawtooth(T,WIDTH)
sawtooth(T)——对时间变量T产生周期为2π,幅值为±1的锯齿波
sawtooth(T,WIDTH)——对时间变量T产生三角波,WIDTH指定三角波的尺度值,取值为0-1,当WIDTH为0.5时,产生对称的三角波信号,当WIDTH为1时,产生锯齿波信号。
(4)正弦波信号函数
Matlab提供了完整的三角函数,如正弦函数sin、双曲正弦函数sinh、反正弦函数asin、反双曲正弦函数asinh、余弦函数cos、双曲余弦函数cosh、反余弦函数acos、反双曲余弦函数acosh、正切函数tan、余切函数cot等。均是对时间变量T产生周期为2π,幅值为±1的对应函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、Matlab信号分析函数
(1)滤波函数filter

filter是利用递归滤波器或非递归滤波器对数据进行滤波处理的函数。
任何一个离散系统可以作为一个滤波器,系统的输出即输入信号经过滤波器滤波后的结果。
一个N阶的离散系统函数
在这里插入图片描述
差分方程为
在这里插入图片描述
filter函数有三个参数:filter(b,a,x)
b为系统函数的分子项组成的行矩阵
a为系统函数的分母项组成的行矩阵
x为输入信号序列
函数返回值为输入序列x经滤波处理后的输出结果
(2)单位抽样响应函数impz
Matlab提供了一个可以直接求取系统单位抽样响应的函数impz
impz函数有两种用法:impz(b,a,p)及h=impz(b,a,p)
b、a为系统函数向量
p为计算的数据点数
h为单位抽样响应结果数据
impz(b,a,p)是直接在Matlab中绘制系统的单位响应杆图(Stem)
h=impz(b,a,p)是将单位抽样响应结果存入变量h中,但不绘图
(3)频率响应函数
频率响应指系统的幅频(幅度-频率)响应及相频(相位-频率)响应。
频率响应是系统最基本最重要的特征,在设计系统时,通常以达到系统所需要的频率响应为目标。
Matlab提供了获取系统的频率响应的函数freqz
freqz有两种用法:freqz(b,a,n,Fs)及[h,f]=freqz(b,a,n,Fs)
b、a分别为系统函数向量
Fs为采样频率
n为在[0,Fs/2]范围内计算的频率点数量,并将频率值存放在f中
h存放频率响应计算结果
freqz(b,a,n,Fs)可直接绘出系统的幅频响应及相频响应曲线
[h,f]=freqz(b,a,n,Fs)将频率响应结果存放在h及f变量中,但不绘图
(4)零极点增益函数
对于离散系统,系统的零极点及增益参数可明确地反映系统的因果性、稳定性等重要特性,进行系统分析及设计时需计算其零极点和增益参数。
Matlab提供root函数来计算系统的零极点,直接使用zplane函数画出系统的零极点图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(5)快速傅里叶变换函数
快速傅里叶变换(Fast Fourier Transform,FFT),充分利用离散傅里叶变换(Discrete Fourier Transform,DFT)运算中的对称性和周期性,从而将DFT运算量N^2(N为计算的数据点数)减少到Nlog2(N)。
N较小时,FFT优势并不明显,但当N大于32时,点数越大,FFT对运算量的改善越明显。
Matlab提供了fft及ifft两个函数分别用于快速傅里叶正/反变换。
常用方法y=fft(x,n)
x是输入信号序列
n是参与计算的数据点数,通常取2的整数幂次方
y存放函数运算结果
当n大于输入序列的长度,fft函数在x的尾部补零构成n点数据
当n小于输入序列的长度,fft函数对序列x进行截尾。
在这里插入图片描述
在这里插入图片描述

三、Matlab源码
(1)Matlab信号产生函数源码

%产生方波、三角波及正弦波序列信号
%定义参数
Ps=10;          %正弦信号功率为10dB
Pn=1;           %噪声信号功率为0dB
f=100;          %信号频率为100Hz
Fs=1000;        %采样频率为1kHz
width=0.5;      %函数sawtooth()的尺度参数为0.5
duty=50;        %函数square()的尺度参数为50
%产生信号
t=0:1/Fs:0.1;
c=2*pi*f*t;
sq=square(c,duty);      %产生方波
tr=sawtooth(c,width);   %产生三角波
si=sin(c);              %产生正弦波
%产生随机信号
noi=rand(1,length(t));      %产生均匀分布的随机序列
noise=randn(1,length(t));   %产生高斯白噪声序列
%产生带有加性高斯白噪声的正弦信号序列
sin_noise=sqrt(2*Ps)*si+sqrt(Pn)*noise;
%归一化处理
sin_noise=sin_noise/max(abs(sin_noise));
%绘图
subplot(3,2,1);
plot(t,noi);
axis([0 0.1 -1.1 1.1]);
xlabel('时间(s)','fontsize',8,'position',[0.08,-1.5,0]);
ylabel('幅度(v)','fontsize',8);
title('均匀分布随机信号','fontsize',8);

subplot(3,2,2);
plot(t,noise);
axis([0 0.1 -1.1 1.1]);
xlabel('时间(s)','fontsize',8,'position',[0.08,-1.5,0]);
ylabel('幅度(v)','fontsize',8);
title('高斯白噪声信号','fontsize',8);

subplot(3,2,3);
plot(t,sq);
axis([0 0.1 -1.1 1.1]);
xlabel('时间(s)','fontsize',8,'position',[0.08,-1.5,0]);
ylabel('幅度(v)','fontsize',8);
title('方波信号','fontsize',8);

subplot(3,2,4);
plot(t,tr);
axis([0 0.1 -1.1 1.1]);
xlabel('时间(s)','fontsize',8,'position',[0.08,-1.5,0]);
ylabel('幅度(v)','fontsize',8);
title('三角波信号','fontsize',8);

subplot(3,2,5);
plot(t,si);
axis([0 0.1 -1.1 1.1]);
xlabel('时间(s)','fontsize',8,'position',[0.08,-1.5,0]);
ylabel('幅度(v)','fontsize',8);
title('正弦波信号','fontsize',8);

subplot(3,2,6);
plot(t,sin_noise);
axis([0 0.1 -1.1 1.1]);
xlabel('时间(s)','fontsize',8,'position',[0.08,-1.5,0]);
ylabel('幅度(v)','fontsize',8);
title('SNR=10dB的正弦波信号','fontsize',8);

(2)Matlab信号分析函数源码一

L=128;                          %单位抽样序列的长度
Fs=1000;                        %采样频率为1kHz
b=[0.8 0.5 0.6];                %系统函数的分子系数向量
a=[1 0.2 0.4 -0.8];             %系统函数的分母系数向量
delta=[1 zeros(1,L-1)];         %生成长度为L的单位抽样序列

Filter_out=filter(b,a,delta);   %filter函数获取单位抽样响应
Impz_out=impz(b,a,L);           %impz函数获取单位抽样响应
[h,f]=freqz(b,a,L,Fs);          %freqz函数求频率响应
mag=20*log10(abs(h));           %幅度转换dB单位
ph=angle(h)*180/pi;             %相位值单位转换
zr=roots(b);                    %求系统的零点
pk=roots(a);                    %求系统的极点
g=b(1)/a(1);                    %求系统的增益

%绘图
figure(1);
subplot(2,2,1);
stem(Filter_out);
title('filter函数的单位抽样响应');
subplot(2,2,2);
stem(Impz_out);
title('impz函数的单位抽样响应');
subplot(2,2,3);
plot(f,mag);
title('freqz函数的幅度响应');
subplot(2,2,4);
plot(f,ph);
title('freqz函数的相位响应');
%用freqz绘制频率响应
figure(2);
freqz(b,a);
title('freqz的频率响应');
%用zplane绘制零极点图
figure(3);
zplane(b,a);
title('zplane的零极点图');
(3)Matlab信号分析函数源码二

N=512;      %数据长度
f1=100;     %f1信号频率,单位Hz
f2=150;     %f2信号频率,单位Hz
Fs=400;    %采样评论,单位Hz

t=0:1/Fs:1/Fs*(N-1);                %产生时间序列
s=sin(2*pi*f1*t)+sin(2*pi*f2*t);    %产生两个频率信号的叠加信号
f=fft(s,N);                         %计算傅里叶变换
f=20*log10(abs(f));                 %转化成dB单位
ft=[0:(Fs/N):Fs/2];                 %转化横坐标以Hz为单位
f=f(1:length(ft));                  

%绘图
subplot(2,1,1);
plot(t,s);
xlabel('时间(s)');
ylabel('幅度(v)');
title('时域信号波形');

subplot(2,1,2);
plot(ft,f);
xlabel('频率(Hz)');
ylabel('功率(dB)');
title('信号频谱图');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1219883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB中std函数用法

目录 语法 说明 示例 矩阵列的标准差 三维数组的标准差 指定标准差权重 矩阵行的标准差 数组页的标准差 排除缺失值的标准差 标准差和均值 标准差 std函数的功能是得到标准差。 语法 S std(A) S std(A,w) S std(A,w,"all") S std(A,w,dim) S std(A…

【PTA题目】6-13 求叠数(递归版) 分数 10

6-13 求叠数(递归版) 分数 10 全屏浏览题目 切换布局 作者 李祥 单位 湖北经济学院 请编写递归函数,生成叠数。 例如:Redup(5,8)88888 函数原型 long long Redup(int n, int d); 说明:参数 n 为重复次数(非负整数),d 为数字…

国鑫受邀出席2023英特尔中国区数据中心渠道客户金秋会

10月18日,2023英特尔中国区数据中心渠道客户金秋会在重庆隆重举行,本次会议共邀请了全国英特尔数据中心渠道生态伙伴、本地服务器系统设计及制造厂商参与,Gooxi作为英特尔在中国区重要合作伙伴受邀参加。 会上,英特尔向生态合作伙…

并行计算机系统结构基础

一、并行计算机系统结构 1.并行性 并行性:计算机系统在同一时刻或者同一时间间隔内 进行多种运算或操作 并行性包括两方面的含义 同时性:两个或两个以上的事件在同一时刻发生并发性:两个或两个以上的事件在同一时间间隔 内发生 从处理数…

新品首发 | HP1011:高性能双相交错 PFC 数字控制器

随着PFC技术的发展,不断有新型PFC拓扑结构提出,如单相PFC、交错并联 PFC、传统无桥PFC、图腾柱无桥 PFC等。交错Boost PFC系统不仅具有并联系统的所有优点,还能减少输入电流纹波,降低开关管的电流应力。在中大功率场所通常采用工作…

vue + antd 动态增加表单并进行表单校验

<template><a-modalv-model:visible="visible":title="formData.id ? 编辑渠道 : 添加渠道":width="850":mask-closable="false":destroy-on-close="true"@ok="onSubmit"@cancel="onClose"&g…

【算法萌新闯力扣】:两个数组的交集

力扣热题&#xff1a;两个数组的交集 开篇 今天早上状态不错&#xff0c;花了较短的时间刷了4道力扣算法题。挑选了一道还不错的题目与大伙分享。 题目链接:349.两个数组的交集 题目描述 代码思路 看到题目后&#xff0c;想到可以把一个数组用集合存起来&#xff0c;然后用…

C语言真的需要头文件吗?

C语言真的需要头文件吗&#xff1f; 头文件的作用是什么&#xff1f; 如果你直接定义了函数&#xff0c;当然不需要头文件。 因为调用函数&#xff0c;你得知道函数的参数有多少&#xff0c;都什么类型的&#xff0c;返回值是什么&#xff0c;这样才能调用。最近很多小伙伴找…

超详细的Jmeter接口测试教程以及接口测试流程

一、Jmeter简介 Jmeter是由Apache公司开发的一个纯Java的开源项目&#xff0c;即可以用于做接口测试也可以用于做性能测试。 Jmeter具备高移植性&#xff0c;可以实现跨平台运行。 Jmeter可以实现分布式负载。 Jmeter采用多线程&#xff0c;允许通过多个线程并发取样或通过…

HLS基础issue

hls 是一个用C/c 来开发PL &#xff0c;产生rtl的工具 hls是按照rtl code来运行的 &#xff0c; 但是rtl会在不同器件调用不同的源语&#xff1b; 可能产生的ip使用在vivado另外一个器件的话 会存在问题&#xff1b; Hls &#xff1a; vivado ip &#xff0c; vitis kernel 是…

【IDEA 使用easyAPI、easyYapi、Apifox helper等插件时,导出接口文档缺少代码字段注释的相关内容、校验规则的解决方法】

问题 IDEA 使用easyAPI、easyYapi、Apifox helper等插件时&#xff0c;导出的接口文档上面&#xff0c;缺少我们代码里的注解字段&#xff0c;如我们规定了NOTNULL、字段描述等。 问题链接&#xff0c;几个月之前碰到过&#xff0c;并提问了&#xff0c;到现在解决&#xff0c…

用华为Mate60系列体验玩机功能,乐趣翻倍!

AI隔空操控&#xff0c;隔空滑动屏幕&#xff0c;随心操作更高效&#xff1b; AI信息保护&#xff0c;智能识别人脸&#xff0c;智慧消息隐藏&#xff1b; 智感支付&#xff0c;快人一步&#xff0c;一步即付更迅捷~

助力水泥基建裂痕自动化巡检,基于yolov5融合ASPP开发构建多尺度融合目标检测识别系统

道路场景下的自动化智能巡检、洞体场景下的壁体类建筑缺陷自动检测识别等等已经在现实生活中不断地落地应用了&#xff0c;在我们之前的很多博文中也已经有过很多相关的实践项目经历了&#xff0c;本文的核心目的是想要融合多尺度感受野技术到yolov5模型中以期在较低参数量的情…

人工智能飞速发展的今天,IT行业能做些什么?

原创 | 文 BFT机器人 01 IT行业&#xff1a;信息流通的“媒介” IT行业作为一个信息化产业&#xff0c;通过运用信息手段和技术&#xff0c;为客户收集、整理、储存、传递信息情报&#xff0c;提供信息服务&#xff0c;并提供相应的信息手段、信息技术等服务。 近年来&#xf…

C生万物 | 从浅入深理解指针【最后部分】

C生万物 | 从浅入深理解指针【最后部分】 文章目录 C生万物 | 从浅入深理解指针【最后部分】前言sizeof和strlen的对比sizeofstrlen 数组和指针笔试题解析一维数组字符数组二维数组 前言 我们前面学了四个部分了&#xff0c;如果没有看前面的建议可以看一下前面的~~ C生万物 |…

机械电子设备信息展示预约小程序的效果如何

电子电工机械设备制造业所涵盖的产品非常广泛&#xff0c;各种产品也都是人们生活所需&#xff0c;近些年来&#xff0c;借势市场规模也在迅速增加中。 电子机械设备产品有大件也有小件&#xff0c;但多数产品都是特定人群购买&#xff0c;因其具有长期使用性&#xff0c;因此…

等级保护建设全流程

等保&#xff0c;全称为信息安全等级保护&#xff0c;是对信息和信息载体按照重要性等级分级进行保护的一种工作。 企业的信息系统有收集、储存用户信息的&#xff0c;都需要进行等保建设&#xff0c;以此来整改提升系统的安全防护能力&#xff0c;降低被攻击的风险。若不然一旦…

Android源码分析 - Service启动流程

作者&#xff1a;dreamgyf 这次我们就来讲讲四大组件之一的Service是如何启动和绑定的 流程图 在查阅资料的过程中&#xff0c;我发现有些博主会将梳理好的流程图贴在开头&#xff0c;我觉得这样有助于从宏观上去理解源码的整个流程和设计理念&#xff0c;所以以后的文章我都…

LeetCode---117双周赛---容斥原理

题目列表 2928. 给小朋友们分糖果 I 2929. 给小朋友们分糖果 II 2930. 重新排列后包含指定子字符串的字符串数目 2931. 购买物品的最大开销 一、给小朋友们分糖果I 看一眼数据范围&#xff0c;如果没有啥其他想法思路就直接暴力&#xff0c;时间复杂度O(n^2) 思路&#x…

@Autowired 注入Mapper接口时报红色下划线警告

问题描述 在使用Autowired 注入Mapper接口时报红色下划线警告&#xff0c;虽然对代码没有什么影响可以正常执行&#xff0c;但是作为代码猿的我看着这个报红的就很不舒服&#xff0c;就想着让他不报红 问题描述&#xff1a; Autowired 自动注入&#xff0c;首先要求被自动注入…