Using obw to solve for the bandwidth of a signal
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Russell Geschrey
le 17 Sep 2021
Commenté : Russell Geschrey
le 24 Sep 2021
Hello everyone,
I have a bunch of symbols in the time domain and I am trying to do the fft of them and then calculate their bandwith. I have been trying to use the obw function to do this but the values do not seem to be right. My code is below:
clear
Fs = 1000;
Ts= 1/Fs;
symbol_duration= 1;
t= 0:Ts:symbol_duration;
%% number of functions is degree. Only one for testing
degree = 1;
p(1,:) = (2/symbol_duration)*cos(2*pi*15*t) + (2/symbol_duration)*cos(2*pi*50*t);
for i = 1:degree
%%%%% https://www.mathworks.com/help/matlab/math/fourier-transforms.html
xform=(1/Fs) .* fft( p(i,:) );
n=length(p(i,:));
fshift = (-n/2:n/2-1)*(Fs/n);
yshift(i,:) = abs( fftshift(xform) );
bw(i)= obw( yshift(i,:) )
plot(fshift,yshift(i,:))
xlim([0 Fs/2])
hold on
end
The plot of my fft appears to be correct, but bw always seems to be some very small number that seems incorrect. Any help would be appreciated!
0 commentaires
Réponse acceptée
Ashutosh Singh Baghel
le 24 Sep 2021
Modifié(e) : Ashutosh Singh Baghel
le 24 Sep 2021
Hi Russell,
I understand that 'obw' function is used for returning the 99% occupied bandwidth of the input signal. The function 'obw' uses input signal instead of 'fft' of that input signal. Also, it is good practise to give sampling frequency 'Fs' as second input to 'obw' function.
Please try in the following way -
Fs = 1000;
t= 0:1/Fs:1;
x = cos(2*pi*10*t) + cos(2*pi*60*t);
obw(x,Fs);
2 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Spectral Measurements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!