实用数字信号处理——笔记与基于C++与python的实验(1)

参考书:《实用数字信号处理:从原理到应用》 Steven W. Smith
本笔记的内容倾向于计算机专业,电路相关的内容会较少而程序方面的会比较多;
本文是笔记而不是相对准确的教程,所以仅供参考;

1.1.正弦波数据的生成

正弦波的公式:

y=Asin(ωΔt+ψ)=Asin(2πfΔt+ψ)y=A \sin ( \omega _\Delta t + \psi )=Asin( 2 \pi f _\Delta t + \psi )

假如用一个数组存储正弦波数据,数组的大小为总采样点数:sample_num(单位:个采样点数),设时间为time(单位:秒),采样率为sample_rate(单位:采样点数/秒),则 sample_num=sample_rate×timesample\_num = sample\_rate \times time
要算时间间隔,将sample_num设为1,则时间间隔 t=1/sample_ratet = 1/sample\_rate,还要将相位角从角度制转为弧度制;

C++关键代码如下:

double delta_t = 1.0 / sample_rate;

for (int i = 0; i < sample_num;i++){
    double t = i * delta_t;
    sin_arr[i] = amp * sin(2 * M_PI * freq *t + phase*M_PI/180);
}

用python进行绘图:

参考代码:
https://github.com/SkylarShadow/dsp_guide_for_csbeginner

1.2 数字信号处理的软件部分

1.整数
2.浮点数
3.执行程序速度(算法速度)
(计算机专业的知识略过…)


实用数字信号处理——笔记与基于C++与python的实验(1)
https://skylarshadow.github.io/2023/07/20/dsp-guide1/
作者
SKYlarS
发布于
2023年7月20日
许可协议