【FPGA作业】第二章

该博客详细介绍了使用MATLAB进行正弦信号频谱分析的实验,包括单音正弦信号的时域和DFT结果绘图,以及有限长矩形窗和正弦序列的DTFT分析。实验展示了采样率、信号频率和采样序列长度对结果的影响,并探讨了DTFT与DFT的关系。
摘要由CSDN通过智能技术生成

二 正弦信号频谱分析实验

2.1 单音正弦信号采样序列的时域绘图

绘制下列信号的时域图

信号采样率fs=8000Hz
信号采样序列长度N=32
配置参数
f1=1000; Amp1=1; phy1=0
f2=7000; Amp2=1; phy2=0
f3=9000; Amp3=1; phy3=0

2.1.1 matlab程序

主程序,包括参数设置lab1.m

% lab1
close all;
clear;
fig_fname = 'sine_1_tone.jpg';
fs = 8E3; % 采样率 8k
N = 32; %向量长度
% frequency & amp & initial phase
f1 = 1000; Amp1 = 1; phy1 = 0;
f2 = 7000; Amp2 = 1; phy2 = 0;
f3 = 9000; Amp3 = 1; phy3 = 0;
% 信号向量的下标索引
n_idx = [0 : N-1];
% generate signal 
x1 = Amp1 * sin( 2*pi*f1/fs*n_idx + phy1);
x2 = Amp2 * sin( 2*pi*f2/fs*n_idx + phy2);
x3 = Amp3 * sin( 2*pi*f3/fs*n_idx + phy3);
% 生成绘图的标题文字 
str_fs = num2str(fs); str_N = num2str(N);
str_f1 = num2str(f1); str_Amp1 = num2str(Amp1); str_phy1 = num2str(phy1);
str_f2 = num2str(f2); str_Amp2 = num2str(Amp2); str_phy2 = num2str(phy2);
str_f3 = num2str(f3); str_Amp3 = num2str(Amp3); str_phy3 = num2str(phy3);
% 合成绘图的标题文字
title_str1 = ['f1:', str_f1, 'Hz, ','fs:', str_fs, 'Hz, ','N:', str_N, ', Amp1:' str_Amp1, ', phy1:',str_phy1];
title_str2 = ['f2:', str_f2, 'Hz, ','fs:', str_fs, 'Hz, ','N:', str_N, ', Amp2:' str_Amp2, ', phy2:',str_phy2];
title_str3 = ['f3:', str_f3, 'Hz, ','fs:', str_fs, 'Hz, ','N:', str_N, ', Amp2:' str_Amp3, ', phy2:',str_phy3];
%绘图
h = figure;

subplot(3,1,1);
plot(n_idx, x1, 'color', 'blue'); %连线方式绘图
grid on; hold;
stem(n_idx, x1, 'color', 'red'); %离散样值方式绘图
title(title_str1, 'fontsize', 14);

subplot(3,1,2);
plot(n_idx, x2, 'color', 'blue'); %连线方式绘图
grid on; hold;
stem(n_idx, x2, 'color', 'red'); %离散样值方式绘图
title(title_str2, 'fontsize', 14);

subplot(3,1,3);
plot(n_idx, x3, 'color', 'blue'); %连线方式绘图
grid on; hold;
stem(n_idx, x3, 'color', 'red'); %离散样值方式绘图
title(title_str3, 'fontsize', 14);

2.1.2 三种信号时域图

这里写图片描述

图2. 1 1K、7K、9KHz信号时域图

2.1.3 实验结果分析

根据采样定理,信号的频率为f0,采样频率fs,当fs>2f0时,可将信号完全重构。本实验中三种频率的单音信号1kHz、7kHz和9kHz,采样频率为8kHz,由图看出,时序图相似。分析为三种信号频率差异过小,当频率为500Hz的信号被8kHz的采样率重构时,可看出采样率对不同频率信号的影响。
这里写图片描述
图2. 2 500、7K、9KHz信号时域图

2.2 单音正弦信号采样序列的DFT结果绘图

2.2.1 实验要求

-计算已知正弦信号的DFT谱
-设定不同的仿真配置,观察正弦信号的DFT谱
* 改变DFT的计算长度
* 改变输入正弦信号采样序列的频率

分析信号如下
采样率fs=8kHz
信号采样序列长度N=32
配置参数
f1=3000 Hz; Amp1=1; phy1=0
f2=500Hz; Amp2=1; phy2=0
f3=3000Hz; Amp3=1; phy3=0

2.2.2 matlab程序

主程序,包括参数设置sine_1_tone_dft.m

% file: sine_1_tone_dft.m
% test with Matlab r2015b
close all; clear;
fig_fname_0 = 'sine_1_tone_dft_0.jpg';
fig_fname_1 = 'sine_1_tone_dft_1.jpg';
fig_fname_2 = 'sine_1_tone_dft_2.jpg';
fs  = 8E3; 
f0_0  = 3000; f0_1  = 500; f0_2  = 3000; 
N_0   = 32 ; N_1   = 32 ; N_2   = 35 ;

% plot each case
func_sine_1_tone_dft_plot(f0_0, fs, N_0, fig_fname_0);
func_sine_1_tone_dft_plot(f0_1, fs, N_1, fig_fname_1);
func_sine_1_tone_dft_plot(f0_2, fs, N_2, fig_fname_2);
绘制信号的时域图、线性幅度谱和对数幅度谱func_sine_1_tone_dft_plot.m
function func_sine_1_tone_dft_plot(f0, fs, N, fig_fname);
  n_idx = [0:N-1];  % 信号序列的下标向量 
  x = sin(2*pi*f0/fs*n_idx);    % 生成正弦信号序列
  y = abs(fft(x)); y_dB = 20*log10(1E-6+y); % 计算 DFT 结果线性幅度谱及对数幅度谱

  h = figure;
  % 绘图横轴左右边界
  x_left = -1; x_right = N+1;
  % 时域绘图 
  subplot(3,1,1);
  stem(n_idx, x); grid on; hold;
  plot(n_idx, x); xlim([x_left, x_right]);
  xlim([x_left, x_right]);
  title_str = ['f0:', num2str(f0),'Hz, ', 'fs:', num2str(fs),'Hz, ' 'N:', num2str(N)];
  title(title_str, 'fontsize',14);
  % 绘图线性幅度谱
  subplot(3,1,2); stem(n_idx, y); grid on;
  xlim([x_left, x_right]);
  title_str = ['DFT Magtitude Linear Scale, '];
  title_str = [title_str, ' Max:', num2str(max(y)), ', Min:', num2str(min(y))];
  title(title_str, 'fontsize',14);
  % 绘图对数幅度谱
  subplot(3,1,3); stem(n_idx, y_dB);  grid on;
  xlim([x_left, x_right]);
  title_str = ['DFT Magtitude dB Scale, '];
  title_str = [title_str, ' Max:', num2str(max(y_dB)), ', Min:', num2str(min(y_dB))];
  title(title_str, 'fontsize',14);

  print(h, '-djpeg', fig_fname);  % 保存绘图结果文件
end

2.2.3 实验结果

这里写图片描述
图2. 3 3KHz时域、频域、对数频谱图
采样序列中包含12个完整的信号周期采样值,DFT幅度谱上有两根峰值谱线,其余位置均为0.
这里写图片描述
图2. 4 500Hz信号时域、频域、对数频谱图

采样序列包括2个完整的采样周期,DFT幅度谱有两根峰值谱线,其余位置均为0.
这里写图片描述

图2. 5 3KHz信号时域、频域、对数频谱图
采样序列中包含13个完整的信号周期,以及一个不完整的信号周期采样值。DFT幅度谱分析结果有2根极大值谱线,但其余位置不为0.

2.2.4 实验分析

当采样周期是信号周期的整数倍时,信号采样后的DFT分析结果与连续信号的傅里叶变换频谱最相似。否则发生频谱泄露。

2.3 有限长矩形窗序列的DTFT

因计算机只能计算有限长和离散化的数据,因此使用计算机进行信号处理时,需要将模拟信号变为有限长、离散的数字信号,即对信号进行离散事件序列傅里叶变换DTFT。

2.3.1 matlab程序

主程序,包括参数设置rec_dtft_plot.m

clc 
clear
close all
w_min = -1*pi;
w_max =  1*pi;
w_delta = pi/1000;
% 可修改
n_min =   0;
n_max =   3 ;

n = [n_min:1:n_max];
w = [w_min:w_delta:w_max];

N = length(n);

x = ones(1,N); 
x_dscp_str = 'x(n)';

Y = func_calc_dtft(x, n, w); 

h = func_plot_dtft(x,n,w,Y, x_dscp_str);
计算矩形窗的DTFT, func_calc_dtft.m
% Y(w) = DTFT(x[n]);
function Y = func_calc_dtft(x, n, w) 

N 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值