例3-1 将振幅为1的1Hz正弦波和振幅为0.5的5Hz正弦波相加后进行傅里叶变换。——傅里叶变换理解

该博客通过MATLAB演示了对1Hz和5Hz正弦波相加后的信号进行傅里叶变换的过程,探讨了离散傅里叶变换在数字信号处理中的应用,强调了非周期离散信号在频域的连续周期特性,并展示了不同采样点数对结果的影响。
%2017/8/22日  星期二
%工程北629
%功能:对复杂的信号进行傅里叶分解,得到频谱图。以1sin(2*pi*1*t)和0.5sin(2*pi*5*t)合成的信号为例。
%思想:傅里叶变换
%说明:振幅的大小是变化的,当N 从128,256,512,1024变化时,其振幅是逐渐增大,采样点数越多,越接近原始振幅。

clear all
clc
%输入信号
N = 256;    %数据个数    数据点数为256个数据点,从下面的x中按照采样间隔0.02s 得到的。
dt = 0.02;  %采样间隔    数据总的时间长度 = T = N*dt = 256*dt = 5.12秒
n = 0:N-1;  %序号序列    n是0、1、2、3、4......253、254、255
t = n*dt;   %时间序列    t是0.00、0.02、0.04、0.06、0.08......5.06、5.08、5.10

%信号处理
x = 1*sin(2*pi*1*t) + 0.5*sin(2*pi*5*t);  %A = 1,fc = 1Hz信号 和 A = 0.5,fc = 5Hz信号的合成信号。合成信号最高频率是5Hz
%m = floor(N/2) + 1;     %改变m的值可以看到不同的变化  m = N/2 + 1 = 128+1=129
m = N;                 %分解ab的最大序号值,为分解的N/2个参数再加参数a(0)
%m = 2*N;
%m = 3*N;
a = zeros(1,m);    %系数ak,ak总个数是129个。初始化ak==0
b = zeros(1,m);    %系数bk,bk总个数是129个。初始化bk==0
for k = 0:m-1       %k 是0、1、2、3......126、127、128
    for ii = 0:N-1  %matlab的数组序号只能从1开始,ii是0、1、2、3......254、255
        a(k+1) = a(k+1) + 2/N*x(ii+1)*cos(2*pi*k*ii/N);  %ak 是离散傅里叶变换的公式  
        b(k+1) = b(k+1) + 2/N*x(ii+1)*sin(2*pi*k*ii/N);  %bk 是离散傅里叶变换的公式 
    end
    c(k+1) = sqrt(a(k+1).^2 + b(k+1).^2);    %ck = sqrt(a_k^2+b_k^2)  c(1)、c(2)......c(128)、c(129)
end

%输出信号
subplot(2,1,1),plot(t,x);title('图1--原始信号(时域)'),xlabel('时间t /s')   %绘出时间域信号
subplot(2,1,2),plot((0:m-1)/(N*dt),c);title('图2--傅里叶变换(频域)'),xlabel('频率f /Hz'),ylabel('振幅')  % N*dt = 5.12

%总结:数字信号处理,处理的是离散的点的数字信号
%      非周期的离散的时域信号  对应的傅里叶变换是  连续的周期的频域的幅度谱
%      两个正弦信号相加,还是正弦信号但是在这里,其实不是周期的,因为周期信号的时间是无穷的。
%      此处的原始信号千万不能当作周期来理解,应该看作有限长的非周期信号,而且还是离散的。
%      改变m的值,可以看到真正的非周期离散信号对应的是连续的周期的频域的频谱图,看到频谱的周期性。
%      画图时,横轴 == 点数序列*频率分辨率(即数据点总时间的倒数) == 点数序列/(采样点数*采样间隔) ==
%      (点数序列*采样频率)/数据点数
%      ak和bk  请参考:离散傅里叶变换的公式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值