How to construct subband filter in UFMC/OFDM transmitter?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello,
In the following link, UFMC vs. OFDM Modulation, I am trying to understand the bandFilter Code block within the for loop and I need some interpretation about the usage of exponential function which multiplies the prototypeFilter.
% Loop over each subband for bandIdx = 1:numSubbands
bitsIn = randi([0 1], bitsPerSubCarrier*subbandSize, 1);
symbolsIn = qamMapper(bitsIn);
inpData(:,bandIdx) = bitsIn; % log bits for comparison
% Pack subband data into an OFDM symbol
offset = subbandOffset+(bandIdx-1)*subbandSize;
symbolsInOFDM = [zeros(offset,1); symbolsIn; ...
zeros(numFFT-offset-subbandSize, 1)];
ifftOut = ifft(ifftshift(symbolsInOFDM));
% Filter for each subband is shifted in frequency
bandFilter = prototypeFilter.*exp( 1i*2*pi*(0:filterLen-1)'/numFFT* ...
((bandIdx-1/2)*subbandSize+0.5+subbandOffset+numFFT/2) );
filterOut = conv(bandFilter,ifftOut);
% Plot power spectral density (PSD) per subband
[psd,f] = periodogram(filterOut, rectwin(length(filterOut)), ...
numFFT*2, 1, 'centered');
plot(f,10*log10(psd));
% Sum the filtered subband responses to form the aggregate transmit
% signal
txSig = txSig + filterOut;
end
In bandFilter code block, what I understand is:
- the prototypeFilter as a window function constructed with chebwin window,
- (0:filterLen-1) : this guarantees the filter length (as window length),
- But I don’t understand how the rest of computing parameters are selected for bandFilter.
- What is the meaning of (((bandIdx-1/2)*subbandSize+0.5+subbandOffset+numFFT/2)), how is bandFilter designed with this parameters?
- Please could also explain how do we decide the filter length? Why it has not the same size of the subband?
Many thanks in advance!!
2 comentarios
Asma Askri
el 18 de Mayo de 2018
that term corresponds shiftting the filter to the center of a given subband, but the center frequency fc of each subband=(offset+subbandsize)/2 so by sibstituting terms we get fc = subbandOffset/2+ (bandIdx-1)/2*subbandSize so it does not match what we have : (bandIdx-1/2)*subbandSize+0.5+subbandOffset+numFFT/2). Does any one has an explanation ?
Respuestas (0)
Ver también
Categorías
Más información sobre Digital Filtering en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!