how to get real frequency components using MUSIC compute frequency?
Show older comments
I used pmusic ( https://au.mathworks.com/help/signal/ref/pmusic.html ). It seems that pmusic cannot get real frequency for the signal.
x = cos(0.257*pi*n) + sin(0.2*pi*n) + 0.01*randn(size(n))
should have frequency components of 0.1258 and 0.1.
1. pmusic with No Sampling Specified example
But, the peaks for x-axis(normalized frequency) are 0.257 and 0.2.
2. Specifying Sampling Frequency and Subspace Dimensions example
But, the peaks for x-axis( frequency) are 812(=0.2*fs/2) and 1258(=0.257*fs/2) .
It seems that pmusic cannot get real frequency for the signal? So the peaks at x-axis is not the real frequency? what is the actually frequency? how could I get them for pmusic
4 Comments
Walter Roberson
on 26 Nov 2023
Please show your function calls.
Walter Roberson
on 26 Nov 2023
When you pass fs of 8000 into the first pmusic() call, you are lying completely about the sampling frequency.
Answers (1)
rng default
n = 0:199;
f1 = 0.257/2; f2 = 0.2/2;
fs= 2; % fs (fs>2*max(f1, f2)
% generate signal according to f1, f2, fs
t = n/fs;
x = cos(f1*2*pi*t) + sin(f2*2*pi*t) + 0.01*randn(size(t));
nfft=1024;
[P,f] = pmusic(x,4,nfft,fs,7); % Window length = 7
plot(f,20*log10(abs(P)))
xlabel 'Frequency (Hz)', ylabel 'Power (dB)'
title 'Pseudospectrum Estimate via MUSIC', grid on
xline([f1 f2])
4 Comments
You have a too small window size, which results in poor resolution. It could not resolve the two freq (when fs increase, the two freq normalized by fs get closer). To increase the resolution, you can increase the windown length (say 16).
rng default
n = 0:199;
f1 = 0.257/2; f2 = 0.2/2;
fs= 3; % fs (fs>2*max(f1, f2)
% generate signal according to f1, f2, fs
t = n/fs;
x = cos(f1*2*pi*t) + sin(f2*2*pi*t) + 0.01*randn(size(t));
nfft=1024;
[P,f] = pmusic(x,4,nfft,fs,16); % Window length = 7
plot(f,20*log10(abs(P)))
xlim([0 1])
xlabel 'Frequency (Hz)', ylabel 'Power (dB)'
title 'Pseudospectrum Estimate via MUSIC', grid on
xline([f1 f2])
evelyn
on 30 Nov 2023
Fs should be at least 2x of the max freq of interest to satisfy the sampling requirement.
Window length should be long enough to resolve the frequencies. For conventional method using FT to estimate spectrum, L is proportial to fs/delta_f. For the example above:
f1 = 0.257/2; f2 = 0.2/2;
fs= 3;
% Length of windows for conventional FT
fs/abs(f2-f1)
For MUSIC, the windown length can be significantly smaller. The exact number is subject to SNR, noise properties, signal properties and so on (since signal and noise subspaces are estimated from the data).
Categories
Find more on Direction of Arrival Estimation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




