????????歡迎來到本博客????????
??博主優(yōu)勢:??????博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。
??座右銘:行百里者,半于九十。
??????本文目錄如下:??????
目錄
??1 概述
??2 運(yùn)行結(jié)果
??3 Matlab代碼實(shí)現(xiàn)
??4?參考文獻(xiàn)
??1 概述
本文可塑造性強(qiáng)。 本文介紹了高分辨率多傳感器時頻分布(MTFD)及其在多通道非平穩(wěn)信號分析中的應(yīng)用。該方法結(jié)合了高分辨率時頻分析和陣列信號處理方法。MTFD的性能通過多種應(yīng)用進(jìn)行了演示,包括基于到達(dá)方向(DOA)估計(jì)的源定位和非平穩(wěn)源的自動組分分離(ACS),重點(diǎn)是盲源分離。MTFD方法通過腦電圖信號的兩個應(yīng)用進(jìn)一步說明。一種專門使用 ACS 和 DOA 估計(jì)方法進(jìn)行偽影去除和源定位。另一種使用MTFD進(jìn)行跨渠道因果關(guān)系分析。本文可以換上自己的數(shù)據(jù),并將這些方法實(shí)現(xiàn)。
??2 運(yùn)行結(jié)果
?部分代碼:
clear; close all; clc;
addpath(genpath('Supporting functions'));
%% Main
%% Extracting SNR information from Data Folders
S = dir('../data/DOA Data');
SNR_N = sum([S(~ismember({S.name},{'.','..'})).isdir]);
SNR_i = zeros(1,SNR_N);
for i = 1:SNR_N
? ? [~, r1] = strtok(S(7+i).name);
? ? [s1, rrr] = strtok(r1);
? ? SNR_i(1,i) = str2double(s1);
end
SNR_i = sort(SNR_i);
%% MUSIC and TF-MUSIC Spectrum
SNR_N = 2;
figure('Color',[1 1 1],'Position',[100, 70, 900 500]);
ha = tight_subplot(SNR_N/2,2,[0.05 0.01],[0.12 0.12],[0.08 0.08]);
for i = 1:SNR_N
? ? Path = ['../data/DOA Data/SNR ' num2str(SNR_i(i)), ' dB'];
? ? load([Path '/Averaged_Spectrum']);
? ? axes(ha(i));
? ? plot(theta, P_tf_music_avg,'-b','linewidth',2); hold on;
? ? plot(theta, P_music_avg,'-.r','linewidth',2); hold on;
? ? plot(repmat(ra(1),10),linspace(0,1.2,10),'k--','linewidth',2); hold on
? ? plot(repmat(ra(2),10),linspace(0,1.2,10),'k--','linewidth',2); grid on
? ? axis([0 39.9 0 1.2])
? ? if(mod(i,2) && i < SNR_N-1)
? ? ? ? set(gca,'XTickLabel','','fontweight','bold','fontsize',13);
? ? ? ? ylabel('P_M_U_S_I_C (\theta)','Fontsize',16);
? ? ? ? title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
? ? elseif i == SNR_N-1
? ? ? ? set(gca,'fontweight','bold','fontsize',13);
? ? ? ? ylabel('P_M_U_S_I_C (\theta)','Fontsize',16);
? ? ? ? xlabel('\theta (deg)','Fontsize',16);
? ? ? ? title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
? ? elseif i == SNR_N
? ? ? ? set(gca,'YTickLabel','','fontweight','bold','fontsize',13);
? ? ? ? xlabel('\theta (deg)','Fontsize',16);
? ? ? ? title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
? ? ? ? legend('TF-MUSIC Averaged Spectrum','MUSIC Averaged Spectrum','True Angles','Location','Southwest')
? ? else
? ? ? ? set(gca,'XTickLabel','','YTickLabel','','fontweight','bold');
? ? ? ? title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
? ? end
end
set(gcf,'Units','inches'); screenposition = get(gcf,'Position');
set(gcf,'PaperPosition',[0 0 screenposition(3:4)],'PaperSize',screenposition(3:4));
%% DOA NMSE
SNR_N = sum([S(~ismember({S.name},{'.','..'})).isdir]);
Path = ['../data/DOA Data/SNR ' num2str(SNR_i(i)), ' dB'];
load([Path '/DOA'],'ra');
nmse_music ? ? = zeros(length(ra), SNR_N);
nmse_tf_music ?= zeros(length(ra), SNR_N);
nmse_esprit ? ?= zeros(length(ra), SNR_N);
nmse_tf_esprit = zeros(length(ra), SNR_N);
music_rate ? ?= zeros(length(ra), SNR_N);
tf_music_rate = zeros(length(ra), SNR_N);
for i = 1:SNR_N
? ? Path = ['../data/DOA Data/SNR ' num2str(SNR_i(i)), ' dB'];
? ? load([Path '/DOA']);
? ? for j = 1:length(ra)
? ? ? ? temp1 = DOA_music(:,j); temp2 = DOA_tf_music(:,j);
? ? ? ? music_rate(j,i) ? ?= sum(temp1~=0)/length(temp1);
? ? ? ? tf_music_rate(j,i) = sum(temp2~=0)/length(temp2);
? ? ? ? temp1 = temp1(temp1~=0); temp2 = temp2(temp2~=0);
? ? ? ? nmse_music(j,i) ? ? = (mean(((temp1 - ra(j))/ra(j)).^2));
? ? ? ? nmse_tf_music(j,i) ?= (mean(((temp2 - ra(j))/ra(j)).^2));
? ? ? ? nmse_esprit(j,i) ? ?= (mean(((DOA_esprit(:,j) - ra(j))/ra(j)).^2));
? ? ? ? nmse_tf_esprit(j,i) = (mean(((DOA_tf_esprit(:,j) - ra(j))/ra(j)).^2));
? ? end
end
fprintf(2,'Mean Probability of Detection (Pd)\n');
fprintf('MUSIC ? ? : %0.3f\n',mean(mean(music_rate)));
fprintf('TF_MUSIC ?: %0.3f\n',mean(mean(tf_music_rate)))
fprintf('ESPRIT ? ?: %0.1f\n',1)
fprintf('TF_ESPRIT : %0.1f\n',1)
figure('Color',[1 1 1],'Position',[100, 10, 650, 550]);
ha = tight_subplot(1,1,[0.01 0.01],[0.12 0.1],[0.12 0.12]);
axes(ha(1));
plot(SNR_i,10*log10(mean(nmse_tf_music)),'-b','linewidth',2); ?hold on;
plot(SNR_i,10*log10(mean(nmse_music)),'--b','linewidth',2); ? ?hold on;
plot(SNR_i,10*log10(mean(nmse_tf_esprit)),'-.r','linewidth',2); hold on;
plot(SNR_i,10*log10(mean(nmse_esprit)),':r','linewidth',2); ? grid on;
xlim([SNR_i(1) SNR_i(end)]);
legend('TF-MUSIC','MUSIC','TF-ESPRIT','ESPRIT','Location','Southwest');
set(gca,'fontweight','bold','fontsize',14);
title('DOA Normalized Mean Square Error','fontsize',18);
xlabel('SNR (dB)'); ylabel('NMSE (dB)');
set(gcf,'Units','inches'); screenposition = get(gcf,'Position');
set(gcf,'PaperPosition',[0 0 screenposition(3:4)],'PaperSize',screenposition(3:4));
%% DOA PDFs
SNR_N = 2;
bins_N = 100;
for i = 1:SNR_N
? ? aa= figure('Color',[1 1 1],'Position',[100, 0, 650, 700]);
? ? ha = tight_subplot(2,1,[0.01 0.01],[0.1 0.1],[0.05 0.05]);
? ? Path = ['../data/DOA Data/SNR ' num2str(SNR_i(i)), ' dB'];
? ? load([Path '/DOA']);
? ? axes(ha(1)); temp = DOA_music; temp = temp(temp~=0);
? ? histogram(temp, bins_N,'Normalization','probability','facecolor',[1 0.84 0],'linewidth',1.2); hold on;
? ? temp = DOA_tf_music; temp = temp(temp~=0);
? ? histogram(temp, bins_N,'Normalization','probability',...
? ? ? ? 'facecolor',[1 0 0],'linewidth',1.2); xlim([0 40]);
? ? temp1 = DOA_music(:,1); temp1 = temp1(temp1~=0); u1 = mean(temp1); s = std(temp1);
? ? tag11 = ['\mu_1 = ', num2str(round(u1,1)), ', \sigma_1 = ', num2str(round(s,1))];
? ? temp1 = DOA_music(:,2); temp1 = temp1(temp1~=0); u1 = mean(temp1); s = std(temp1);
? ? tag12 = ['\mu_2 = ', num2str(round(u1,1)), ', \sigma_2 = ', num2str(round(s,1))];
? ? tag1 = [' ? ? ? ? MUSIC' char(10) tag11 char(10) tag12];
? ? temp1 = DOA_tf_music(:,1); temp1 = temp1(temp1~=0); u1 = mean(temp1); s = std(temp1);
? ? tag11 = ['\mu_1 = ', num2str(round(u1,1)), ', \sigma_1 = ', num2str(round(s,1))];
? ? temp1 = DOA_tf_music(:,2); temp1 = temp1(temp1~=0); u1 = mean(temp1); s = std(temp1);
? ? tag12 = ['\mu_2 = ', num2str(round(u1,1)), ', \sigma_2 = ', num2str(round(s,1))];
? ? tag2 = [' ? ? ? TF-MUSIC' char(10) tag11 char(10) tag12];
? ? legend(tag1, tag2,'Location','Northwest'); grid on;
? ? set(gca,'XTickLabel','','YTickLabel','','fontweight','bold','fontsize',13);
? ? title(['SNR = ' num2str(SNR_i(i)), ' dB'],'fontsize',20);
? ? axes(ha(2));
? ? histogram(DOA_esprit, bins_N,'Normalization','probability',...
? ? ? ? 'facecolor',[0 0.5 0],'linewidth',1.2); hold on;
? ? histogram(DOA_tf_esprit, bins_N,'Normalization','probability',...
? ? ? ? 'facecolor',[0 0.45 0.74],'linewidth',1.2); xlim([0 40]);
? ? temp1 = DOA_esprit(:,1); u1 = mean(temp1); s = std(temp1);
? ? tag11 = ['\mu_1 = ', num2str(round(u1,1)), ', \sigma_1 = ', num2str(round(s,1))];
? ? temp1 = DOA_esprit(:,2); u1 = mean(temp1); s = std(temp1);
? ? tag12 = ['\mu_2 = ', num2str(round(u1,1)), ', \sigma_2 = ', num2str(round(s,1))];
? ? tag1 = [' ? ? ? ? ESPRIT' char(10) tag11 char(10) tag12];
? ? temp1 = DOA_tf_esprit(:,1); u1 = mean(temp1); s = std(temp1);
? ? tag11 = ['\mu_1 = ', num2str(round(u1,1)), ', \sigma_1 = ', num2str(round(s,1))];
? ? temp1 = DOA_tf_esprit(:,2); u1 = mean(temp1); s = std(temp1);
? ? tag12 = ['\mu_2 = ', num2str(round(u1,1)), ', \sigma_2 = ', num2str(round(s,1))];
? ? tag2 = [' ? ? ? TF-ESPRIT' char(10) tag11 char(10) tag12];
? ? legend(tag1, tag2,'Location','Northwest'); grid on;
? ? set(gca,'YTickLabel','','fontweight','bold','fontsize',13);
? ? xlabel('\theta (deg)');
? ? set(gcf,'Units','inches'); screenposition = get(gcf,'Position');
? ? set(gcf,'PaperPosition',[0 0 screenposition(3:4)],'PaperSize',screenposition(3:4));
end
??3 Matlab代碼實(shí)現(xiàn)
??4?參考文獻(xiàn)
部分理論來源于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系刪除。文章來源:http://www.zghlxwxcb.cn/news/detail-501756.html
[1] B. Boashash, A. Aissa-El-Bey, M. F. Al-Sa'd, Multisensor Time-Frequency Signal Processing:
? ? A tutorial review with illustrations in selected application areas, Digital Signal Processing, In Press.
[2] B. Boashash, A. Aissa-El-Bey, M. F. Al-Sa'd, Multisensor time-frequency?signal processing software Matlab package: An analysis tool for multichannel non-stationary data , SoftwareX, In Press.
?文章來源地址http://www.zghlxwxcb.cn/news/detail-501756.html
到了這里,關(guān)于多傳感器時頻信號處理:多通道非平穩(wěn)數(shù)據(jù)的分析工具(Matlab代碼實(shí)現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!