📄 ffconv.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 + -