博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jacobi并行拆解【补充】
阅读量:6427 次
发布时间:2019-06-23

本文共 3511 字,大约阅读时间需要 11 分钟。

作者:桂。

时间:2018-04-24  22:04:52

链接: 


前言

本文为一文的补充,给出另一种矩阵运算的思路。

一、算法流程

  对于复数相关矩阵R,通过矩阵变换,在维度不变的情况下,转化为实数矩阵:

对于MUSIC算法,该思路可以降低Jacobi运算复杂度。额外的操作仅仅是少量的乘法操作,即耗费少量硬件资源换取更快速的处理时间。

直接复数转实数,需要将nxn的矩阵扩展为2n x 2n的矩阵,而直接转化的相关矩阵仍然为 n x n,降低了Jacobi的复杂度

  容易证明U*Un为新的特征向量,而U可与导向矢量a提前乘法处理,存储到Ram里。

  这里可以看出:(R + J*conj(R)*J)/2等价于中心对称线阵的前、后项空间平滑算法,而斜Hermitian矩阵的特征向量与转化的特征向量等价,因此可以得出特性:对于具备中心对称特性的线阵,复数->实数,既可以降低Jacobi复杂度,又具备了解相干信号的能力。

二、仿真验证

  未做实数化处理,code:

clc;clear all;close all%Ref:Narrowband direction of arrival estimation for antenna arraysdoas=[-30 -5 40]*pi/180; %DOA's of signals in rad.P=[1 1 1]; %Power of incoming signalsN=10; %Number of array elementsK=1024; %Number of data snapshotsd=0.5; %Distance between elements in wavelengthsnoise_var=1; %Variance of noiser=length(doas); %Total number of signals% Steering vector matrix. Columns will contain the steering vectors% of the r signalsA=exp(-i*2*pi*d*(0:N-1)'*sin([doas(:).']));% Signal and noise generationsig=round(rand(r,K))*2-1; % Generate random BPSK symbols for each of the% r signalsnoise=sqrt(noise_var/2)*(randn(N,K)+i*randn(N,K)); %Uncorrelated noiseX=A*diag(sqrt(P))*sig+noise; %Generate data matrixR=X*X'/K; %Spatial covariance matrix[Q ,D]= svd(R); %Compute eigendecomposition of covariance matrix[D,I]=sort(diag(D),1,'descend'); %Find r largest eigenvaluesQ=Q(:,I);%Sort?the?eigenvectors?to?put?signal?eigenvectors?firstQs=Q (:,1:r); %Get the signal eigenvectorsQn=Q(:,r+1:N); %Get the noise eigenvectors% MUSIC algorithm%?Define?angles?at?which?MUSIC???spectrum????will?be?computedangles=(-90:0.1:90);%Compute steering vectors corresponding values in anglesa1=exp(-i*2*pi*d*(0:N-1)'*sin([angles(:).']*pi/180));for k=1:length(angles)%Compute?MUSIC???spectrum??music_spectrum(k)= 1/(a1(:,k)'*Qn*Qn'*a1(:,k));endfigure(1)plot(angles,abs(music_spectrum))title('MUSIC Spectrum')xlabel('Angle in degrees')

实数化处理,code:

clc;clear all;close all%Ref:Narrowband direction of arrival estimation for antenna arraysdoas=[-30 -5 40]*pi/180; %DOA's of signals in rad.P=[1 1 1]; %Power of incoming signalsN=10; %Number of array elementsK=1024; %Number of data snapshotsd=0.5; %Distance between elements in wavelengthsnoise_var=1; %Variance of noiser=length(doas); %Total number of signals% Steering vector matrix. Columns will contain the steering vectors% of the r signalsA=exp(-i*2*pi*d*(0:N-1)'*sin([doas(:).']));% Signal and noise generationsig=round(rand(r,K))*2-1; % Generate random BPSK symbols for each of the% r signalsnoise=sqrt(noise_var/2)*(randn(N,K)+i*randn(N,K)); %Uncorrelated noiseX=A*diag(sqrt(P))*sig+noise; %Generate data matrixR=X*X'/K; %Spatial covariance matrix%% Reconstruct%实数n = size(R);I = eye(n/2);J = fliplr(eye(n));U = 1/sqrt(2)*[I fliplr(I);1j*fliplr(I) -1j*I];R = 0.5*U*(R+J*conj(R)*J)*U';% Reconstruct_end[Q ,D]= svd(R); %Compute eigendecomposition of covariance matrix[D,I]=sort(diag(D),1,'descend'); %Find r largest eigenvaluesQ=Q(:,I);%Sort?the?eigenvectors?to?put?signal?eigenvectors?firstQs=Q (:,1:r); %Get the signal eigenvectorsQn=Q(:,r+1:N); %Get the noise eigenvectors% MUSIC algorithm%?Define?angles?at?which?MUSIC???spectrum????will?be?computedangles=(-90:0.1:90);%Compute steering vectors corresponding values in anglesa1=exp(-i*2*pi*d*(0:N-1)'*sin([angles(:).']*pi/180));for k=1:length(angles)%Compute?MUSIC???spectrum??music_spectrum(k)= 1/(a1(:,k)'*U'*Qn*Qn'*U*a1(:,k));endfigure(1)plot(angles,abs(music_spectrum))title('MUSIC Spectrum')xlabel('Angle in degrees')

 

转载于:https://www.cnblogs.com/xingshansi/p/8934373.html

你可能感兴趣的文章
java通过UUID生成16位唯一订单号
查看>>
001-web基本程序搭建
查看>>
函数指针和指针函数
查看>>
Intel 揭秘:如何在公有云、混合云和私有云间合理放置工作负载
查看>>
借力AI 极验如何构建下一代业务安全?
查看>>
用Python制作迷宫GIF
查看>>
支付宝推出基于区块链跨境支付,巨头入场小企业将面临灭顶之灾
查看>>
从事互联网行业,怎样才能快速掌握一门编程语言呢?
查看>>
谈谈fail-fast与fail-safe是什么以及工作机制
查看>>
深入浅出换肤相关技术以及如何实现
查看>>
Redis 基础、高级特性与性能调优
查看>>
React native 第三方组件 React native swiper
查看>>
接口幂等设计
查看>>
编程入门指南
查看>>
移动端的自适应方案—REM
查看>>
你真的懂volatile吗
查看>>
Android 编译时注解-提升
查看>>
说说 Spring AOP 中 @Aspect 的高级用法
查看>>
Workbox CLI中文版
查看>>
贝聊亿级数据库分库分表实践
查看>>