写在前面
最近一直在用matlab在所信号处理算法的仿真工作,这一系列博客主要会分详一下遇到的一些问题及解决办法,和一些常用的功能模块的实现以及分分享。
一、正弦信号生成
一段正弦信号,主要设计这些参数的设置:
- 采样率:理论上来说要满足奈奎斯特采样频率,但是在实际使用中,一般都选择更高倍数,防止信号失真
- 采样时间:决定信号长度or点数
- 信号形式:单频or多频叠加,原理
二、matlab实现
2.1 生成单频正弦信号
按照上节所说的内容,进行代码的编写就好了
%生成单频正弦信号
function [signal] = Any_freq_signal(fs , t, f ,Amp,phase)%采样率,时间,频率,幅值,相位(deg)
dt = 1/fs;
N = t*fs;
t = 0:dt:(N-1)*dt;
signal = Amp*sin(2*pi*f*t+phase/180*pi);
end
上面代码部分可生成特定频率和长度的单频正弦信号,但是在实际情况下吗,信号并不是理想的,因此通常会加入不同信噪比的噪声来进行对比测试,这里可以在以后的内容中展开介绍,
2.2 生成多频正弦信号
当我们想要的信号是多个频率的正弦叠加时,最简单的方法当然是利用循环把每个正弦信号叠加起来,但是这种方法耗时较多,可以考虑用矩阵的方式实现。
%生成多频正弦信号
function [signal] = Mult_freq_signal(fs , t, f ,Amp,phase)%采样率,时间,频率,幅值,相位(deg)
dt = 1/fs;
N = t*fs;
t = (0:dt:(N-