⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ffconv.m

📁 matlab环境下编写的fft算法实现的源代码
💻 M
字号:
clc;
clear all;
close all;

F_start=9e3;
B=3e3;
T=20e-3;%==sync_sig_space882/Fs得到
K=B/T;
Fs=44100;
Num=10;
n=0:1:Num-1;
LFM=cos(2*pi*F_start*n/Fs-pi*K*(n/Fs).^2);
n1=0:1:3*(Num-1);
LFM1=cos(2*pi*F_start*n1/Fs-pi*K*(n1/Fs).^2);

n_l=length(LFM);
n_fft=2^ceil(log2(2*n_l-1));%每小段卷积长度
n_m=n_fft+1-n_l;%按L+M-1=n_fft分段
n_rx=ceil(length(LFM1)/n_m);

h=[LFM zeros(1,n_fft-n_l)];%补零为fft点
x=[ LFM1  zeros(1,n_rx*n_m-length(LFM1))];%将rx补为n_m的整数倍

n_n=length(x)+length(LFM)-1;%卷积后总长
rx0=zeros(1,n_m);
z_t=zeros(1,n_n);
z=zeros(1,n_n);

for test1=0:n_rx-1
    for test2=1:n_m
         rx0(:,test2)=x(:,test1*n_m+test2);        
     end
   %  rx0=[rx0 zeros(1,n_fft-n_m)];%补零为fft点
    
    z_i=real(ifft(fft(rx0,n_fft).*fft(flipud(h),n_fft)));
        %z_t=[zeros(1,test1*n_l) z_i  zeros(1,n_n-length(z_i)-test1*n_l)];
    z_t=[zeros(1,test1*(n_m)) z_i  zeros(1,n_n-length(z_i)-test1*(n_m))];%n_fft-n_l+1
    z=z+z_t;
end

%z=real(ifft(fft(rx,2^ceil(log2(length(rx)))).*fft(flipud(LFM'),2^ceil(log2(length(rx))))));
[temp sign]=max(z);%===max函数还将z中最大值标志(indices)放入st中
sign
figure;plot(z);title('同步头检测');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -