利用CVX工具箱实现多快拍采样的稀疏矩阵DOA估计(多快拍视为独立的若干个单快拍,结果求均值)
来源:互联网 发布:西南大学远程网络教育 编辑:程序博客网 时间:2024/06/06 03:12
参考文献:同上篇
方法:
论文中给出的仿真结果:
实验条件:入射角度:60°,70°,108°。
贴代码:
%date:2017.6.2%author:Lola%处理多点采样,将多点采样中的每一点看成是独立的单点采样,从而进行稀疏矩阵的DOA估计clc clear allclose allM = 8; %阵元数K = 3; %信源数 L1=1;L11=1:40; %快拍数d_lamda =0.5; %阵元间距半波长w = [pi/4 pi/3 pi/2]'; %信号频率theta1 = [15 20 55]; %信号来向snr=20; %信噪比p=length(L11);q=length(theta1); for LL=1:p L=L11(LL); %L为当前快拍数for mc=1:L %将多次采样看成是很多个单次采样for k=1:K% s=sqrt(10.^(snr/10))*exp(1j*w*[0:L1-1]); s=sqrt(10.^(snr/10))*[1+1j*w]; %信号(信源数*快拍数) for kk=1:M A(kk,k)=exp(-1j*2*pi*(kk-1)*d_lamda*sin(theta1(k)*pi/180)); %阵列流型(阵元数*信源数) endendX=A*s;X=awgn(X,snr); %加入高白噪声AA=[]; %构造过完备基theta=10:0.3:61;for kkk= 1:length(theta) g=exp(-1j*2*pi*[0:M-1]'*d_lamda*sin(theta(kkk)/180*pi)); AA=[AA,g]; end cvx_begin variable x(171) complex; minimize(square_pos(norm(X-AA*x,2))+2*norm(x,1));cvx_endY=[];m=1;x1=conj(x); power=x1.*x; %求信号能量xx=[(20*log10(power))].'; %转化成功率[v,I]=findpeaks(xx); %峰值搜索[vv,II]=sort(v,'descend');for ii=1:q m=II(ii); Y(ii)=I(m)*0.3;endYY(mc,:)=Y;YY(mc,:)=sort(YY(mc,:));endYYY(LL,:)=[sum(YY(:,1)) sum(YY(:,2)) sum(YY(:,3))]/L; %记录多次实验数值YYY=roundn(YYY,-2);endplot(1:40,YYY(1:40,:),'-.');xlabel('time sample');ylabel('DOA/degree');title('multiple time samples processing');我的仿真结果:
仿真结果还是比较理想的。
说一下仿真中遇到的困难
1.峰值搜索部分,最开始是一个一个点搜索的,比较它与左右两点的值,但是这样的结果是错误的,因为还会有很多小伪峰出现,虽然小伪峰峰值的出现在视觉上不会让我们出现误解,但是计算机会把伪峰值对应的坐标值也误记为入射角度。所以采用了findpeaks()函数,这个也是今天学到的,后期我们可以通过截断的方式选取有限个峰值点。
2.因为论文里这种方法是进行多次重复试验取平均,最后的数值记录部分遇到了一点麻烦,想了很久怎么才能把每次实验的数值都以此计入我们需要的矩阵里。最后解决的办法就是国外某大学常跳楼的地方贴的标语:Think about low dimension.嗯,最后自己就是从2*2的数据试验了一下方法,拓展到40*3的就不难了。
这块记录一下吧,当时实验的是
I=[]J=[]for j=1:2; for i=1:2 I(1,i)=i+j; end J(j,:)=I;end在命令窗口试一下就是
>> I
I =
3 4
>> J
J =
2 3
3 4
以此类推得出的多次试验记录数据的方法。
3.画图部分,不知道怎么讲一个横坐标值对应多个纵坐标值,因为一个快拍数对应了3个估计角度。
依然"THINK ABOUT LOW DIMENSION",准备把这句话奉为真理,真的可以解决很多问题!
阅读全文
0 0
- 利用CVX工具箱实现多快拍采样的稀疏矩阵DOA估计(多快拍视为独立的若干个单快拍,结果求均值)
- 利用CVX工具箱实现单快拍的稀疏矩阵DOA估计
- 等距网格细化的单快拍稀疏矩阵的DOA估计
- L1_SVD方法的稀疏矩阵的DOA估计
- 基于MUSIC算法的信号DOA估计
- SVM的matlab实现——CVX工具箱应用
- 稀疏矩阵的实现
- 利用三元组求稀疏矩阵的加、减、逆置(c语言)
- 简单的稀疏矩阵实现
- 稀疏矩阵的C++实现
- 稀疏矩阵的加减法、乘法、求逆运算
- mac上的matlab的设置工具箱cvx
- 利用稀疏矩阵的“三元组表”存储结构,实现两个矩阵的相加。
- 数据结果第八周项目4--稀疏矩阵的三元组表示的实现及应用
- 数据结果第八周项目4--稀疏矩阵的三元组表示的实现及应用
- 数据结构与算法(Java描述)-15、稀疏矩阵以及稀疏矩阵的三元组实现
- 稀疏矩阵的三元组表示的实现(3.1)
- 矩阵(稀疏矩阵)的压缩存储
- Codeforces Round #417 (Div. 2) E. Sagheer and Apple Tree (树上尼姆博弈)
- Error:Content is not allowed in prolog.
- 【LeetCode】448.Find All Numbers Disappeared in an Array
- Spring-AOP
- python 导入selenium包(win7)
- 利用CVX工具箱实现多快拍采样的稀疏矩阵DOA估计(多快拍视为独立的若干个单快拍,结果求均值)
- Hrbust 1123 MST(最小生成树,Kruskal算法|Prim算法)
- 51 C语言if else语句
- 599. Minimum Index Sum of Two Lists
- win7安装Anaconda+TensorFlow
- angular2父子组件的数据传递,父组件向子组件传递数据
- 异常信息:Exception in thread "main" java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver
- codeforces 617 E. XOR and Favorite Number(莫队)
- 倍增新姿势