📄 mc_afb.m
字号:
function y=mc_afb(r,Slot_length,prototype_filter,Carrier_number,SubCarrier_first,SubCarrier_last,Sampling_factor,Oversampling_factor,Filter_length)
K1=floor(Filter_length/Carrier_number/2);
K2=Filter_length-2*Carrier_number*K1; % Filter_length=2*K1*Carrier_number+K2;
NewSampling_factor=Sampling_factor/Oversampling_factor; % Samplinge factor of multicarrier analysis filter bank.
N=floor(length(r)/NewSampling_factor)-2; % Length of subcarrier outputs.
r=[zeros(1,(Filter_length-1)/2-NewSampling_factor) r zeros(1,(Filter_length-1)/2-NewSampling_factor)];
for n=0:N-1
tmp0=r(n*NewSampling_factor+1:n*NewSampling_factor+Filter_length).*prototype_filter;
tmp1=sum(reshape([tmp0 zeros(1,2*Carrier_number-K2)],2*Carrier_number,K1+1),2);
tmp2=(tmp1(1:Carrier_number)+(-1)^(Carrier_number-1)*tmp1(Carrier_number+1:end)).*exp(j*pi*(0:Carrier_number-1)'*(Carrier_number-1)/Carrier_number);
tmp3=fft(tmp2,Carrier_number);
y(:,n+1)=tmp3(SubCarrier_first+1:SubCarrier_last+1);
end
y=y.*exp(-j*2*pi*((SubCarrier_first:SubCarrier_last)-(Carrier_number-1)/2)'*(NewSampling_factor*(0:N-1)-(Filter_length-1)/2)/Carrier_number);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -