⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 music.m

📁 MUSIC算法对信号DOA的估计 修正的线阵算法.
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FUNCTION: music.m%% AUTHOR: Steve Kogon% % DATE: January 18, 1999%% DESCRIPTION: This file forms an estimate of the frequency spectrum using %              MUSIC algorithm (spectral version), (Schmidt 1986).%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-----------------------------------------------------------% Copyright 2000, by Dimitris G. Manolakis, Vinay K. Ingle,% and Stephen M. Kogon.  For use with the book% "Statistical and Adaptive Signal Processing"% McGraw-Hill Higher Education.%-----------------------------------------------------------function [fest,Rbar] = music(x,P,M,Nfft)% x = signal% P = number of complex exponentials% M = time-window length% Nfft = number of FFT frequencies% Generate data matrixN = length(x) - M + 1;X = zeros(N,M);for n = 1:M   X(:,n) = x((1:N)+ (M-n));endR = (1/N)*X'*X;                % estimate correlation matrix% Compute eigendecomposition and order by descending eigenvalues[Q0,D] = eig(R);[lambda,index] = sort(abs(diag(D)));lambda = lambda(M:-1:1);Q=Q0(:,index(M:-1:1));% Compute pseudo-spectrumf = (-Nfft/2:(Nfft/2-1))/Nfft;                % FFT frequenciesQbar = zeros(Nfft,1);for n = 1:(M-P)   Qbar = Qbar + abs(fftshift(fft(Q(:,M-(n-1)),Nfft))).^2;endRbar = 1./Qbar;% Find local maxima (values of Rbar that are larger than their neighbors)z1 = Rbar(2:(Nfft-1)) - Rbar(1:(Nfft-2));z2 = Rbar(2:(Nfft-1)) - Rbar(3:Nfft);peak_index = find((z1 > 0) & (z2 > 0)) + 1;if Rbar(1) > Rbar(2)   peak_index = [1       peak_index];endif Rbar(Nfft) > Rbar(Nfft-1)   peak_index = [peak_index                 Nfft];endNpeaks = length(peak_index);f_peaks = f(peak_index);% Determine the P largest peaks (taken from local maxima)[dummy,fest_index] = sort(Rbar(peak_index));fest = f_peaks(fest_index(Npeaks:-1:(Npeaks-P+1))).';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -