信号处理常用matlab之16数据链信号生成
Posted 一只学习的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号处理常用matlab之16数据链信号生成相关的知识,希望对你有一定的参考价值。
(1)基带信号参数设置
基带信号的码率5MSPS;
设置每个码元采8个点,因此基带采样率是40M(此参数在后面对基带信号进行上采样设置滤波器输入采样率时要用);
(2)产生基带的随机序列,然后调用matlab自带的函数mskmod进行调制并内插24倍
(3)生成滤波器系数,并对内插后的基带信号进行滤波
(4)进行5倍的抽取,最后采样率变为192M
(5)上变频为中频信号
(6)对生成的信号加高斯白噪声
涉及到的知识点:
(1)内插滤波抽取理论:
一般是先内插,然后滤波,最后抽取,这里选择的是先24倍,滤波后再5倍抽取;其中滤波器系数的生成: Matlab中继承了可视化的滤波器设计插件fdatool,可以方便地在可视化界面中设计滤波器参数,然后导出参数,以备后续使用。具体使用方法如下:
1)在命令行输入fdatool即可弹出如下的滤波器设计窗口
2)设置要生成的滤波器类型和对应参数,比如上图设计低通滤波器,设置采样率48M,通带和阻带截止频率分别为9.6M和12M,通带衰减和阻带衰减分别为1dB和80dB,点击Design Filter按钮即可设计出对应的滤波器。
3)导出滤波器函数m文件,选择File/Generate MATLAB Code/Filter Design Function(with System Objects),生成滤波器函数文件:
function Hd = lp_filter
%LP_FILTER Returns a discrete-time filter object.
% MATLAB Code
% Generated by MATLAB(R) 9.4 and DSP System Toolbox 9.6.
% Generated on: 10-Jun-2021 22:54:59
% Equiripple Lowpass filter designed using the FIRPM function.
% All frequency values are in kHz.
Fs = 48000; % Sampling Frequency
Fpass = 9600; % Passband Frequency
Fstop = 12000; % Stopband Frequency
Dpass = 0.057501127785; % Passband Ripple
Dstop = 0.0001; % Stopband Attenuation
dens = 20; % Density Factor
% Calculate the order from the parameters using FIRPMORD.
[N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]);
% Calculate the coefficients using the FIRPM function.
b = firpm(N, Fo, Ao, W, dens);
Hd = dsp.FIRFilter( ...
'Numerator', b);
% [EOF]
4)可调用上述滤波器函数实现滤波,假设输入为X,则:
h = lp_filter;
fiter(h,1,X);
(2)全频带和带内信噪比的区分:给定的指标通常是带内信噪比,加噪时要换算为全频带信噪比;
(3)matlab存数据文件的存储格式
fid= fopen('数据文件存储路径','w');
fwrite(fid,varible_save,'int16');
fclose(fid);
以上是关于信号处理常用matlab之16数据链信号生成的主要内容,如果未能解决你的问题,请参考以下文章