24小时热门版块排行榜    

查看: 610  |  回复: 3

realfeifei

金虫 (小有名气)

[求助] 请教利用sedumi设计空间滤波器

利用二阶锥设计空间滤波器问题请教!!!
假设一个由12个各向同性阵元组成的水平均匀线列阵, 从阵列的一端依次编号为#1, #2, ⋯, #12阵元, 定义基阵法线方向为0º. 阵元间隔取为1920 Hz的半波长, 系统采样频率为fs=6000 Hz, 要求在工作频带FP=[960, 1920] Hz内形成频率不变波束.
将观察扇面[-90º,90º]按2.5º离散化, 以960 Hz的常规(延迟求和)波束主瓣作为参考波束主瓣, 并选择其中的5个方位点={-17.5°, -10°, 0°, 10°, 17.5°}的波束响应作为主瓣内期望波束响应. 设定旁瓣区域为SLΘ= [-90°︰2.5°︰-25°][25°︰2.5°︰90°], 期望旁瓣级为-25 dB.
下面的程序是用上面的约束条件求1920Hz的阵元加权系数,以实现-25dB旁瓣和接近920Hz对应的主瓣.
最终的结果却不如所愿,恳请高手指点!!
clear all;
path(path,'E:\SDM\SeDuMi_1_1');

f_l=960;
f_h=1920;
c_sound=1500;
fs=6000;
lamda=c_sound/f_h;
d=lamda/2;
lamda_l=c_sound/f_l;
N=12;%»ùÔªÊý
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
angle = -90:2.5:90;
Num = size(angle,2);
for i=1:Num    signal(1:1:N)=exp(1j*2*pi*((1:N)-1)*d/lamda_l*sin(angle(i)*pi/180));     
    %%%%%%%%%%%%%%%%%%%%%%%%%
    Mag_c_ref(i) = signal*ones(N,1)
    Mag_ref = abs(Mag_c_ref);
end
figure(1)
plot(angle,20*log10(Mag_ref/max(Mag_ref)),'.')
ylim([-50 0])
grid on;
%%%%%%%%%%%%%%%%%%%%%%%%%%主瓣条件%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
theta_d = [-17.5,-10,0,10,17.5]*pi/180;
theta_d_m = [Mag_c_ref(30) Mag_c_ref(33) Mag_c_ref(37) Mag_c_ref(41) Mag_c_ref(44)]/ abs(Mag_c_ref(37));
%%%%%%%%%%%%%%%%%%%%%%%%%旁瓣条件%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
theta_s = [-90:2.5:-25  25:2.5:90]*pi/180;
theta_s_m = ones(1,size(theta_s,2))*10.^(-25/20);

hold on;%figure(2)
theta = [theta_s(1:end/2) theta_d theta_s(end/2+1:end)];
theta_p=abs([theta_s_m(1:end/2) theta_d_m theta_s_m(end/2+1:end)]);
plot(theta*180/pi,20*log10(theta_p/max(theta_p)),'k*');

lamda = c_sound/(960*1.5);
K.q=[];
M1=size(theta_d,2);
c1 = cell(M1,1);
%%%%%%%%%%%%主瓣约束二阶锥%%%%%%%%%%%%%%%%
A = cell(3*M1,1);%%%%
for i = 1:M1
        c1{i} = [1 2*theta_d_m(i) -1].';   
        v = exp(-1j*2*pi*((1:N)-1)*d/lamda*sin(theta_d(i))).';        
        AAA = [0 0 0 0 0];           
        AAA(i) = 1;
        q=AAA.';
        A{(i-1)*3+1} = [-q.',zeros(1,N)];
        A{(i-1)*3+2} = [zeros(1,M1), 2*v.'];
        A{(i-1)*3+3} = [-q.',zeros(1,N)];
        
        K.q=[K.q,3];
end

%%旁瓣约束二阶锥
epsro = 10.^(-25/20);
M2 = size(theta_s,2);
B = cell(2*M2,1);
c2 = cell(M2,1);
for i = 1:M2
        c2{i} = [epsro,0].';   
        v = exp(-1j*2*pi*((1:N)-1)*d/lamda*sin(theta_s(i))).';        
        B{(i-1)*2+1} = [zeros(1,M1) zeros(1,N)];
        B{(i-1)*2+2} = [zeros(1,M1) -v.'];      
        K.q=[K.q,2];
end
%%权值约束二阶锥
gama = 1;%0.7;%1;%0.7;
C = cell(2*1,1);%%%%Am'
c3= cell(1,1);
c3 = [gama 0].';   
C{1,1} = [zeros(1,M1) zeros(1,N)];
C{2,1} = [zeros(1,M1) -ones(1,N)];

c1=cell2mat(c1);
c2=cell2mat(c2);
K.q=[K.q,2];

c = [c1.' c2.' c3.'].';
A=cell2mat(A);
B=cell2mat(B);
C=cell2mat(C);
At=[A.' B.' C.'].';
b = [ones(1,5), zeros(1,12)]';

[x,y,info]=sedumi(At,-b,c,K);
info
b.'*y
%%画实际的波束图
w=y(M1+1:end);
angle = -90:2.5:90;
Num = size(angle,2);
for i=1:Num    signal(1:1:N)=exp(1j*2*pi*((1:N)-1)*d/lamda*sin(angle(i)*pi/180));     
    w_mag=w;
    w_phase=ones(N,1);%Õýǰ•½Ïàλ¼ÓȨÏàͬ   
    Mag(i) = abs(signal*(w_mag.*w_phase));   
end
hold on;%figure(3)
plot(angle,20*log10(Mag/max(Mag)),'rp')
legend('reference beam pattern','desired beam pattern','realized beam pattern')
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

通信小研

新虫 (初入文坛)

内容已删除
2楼2013-08-23 11:32:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

realfeifei

金虫 (小有名气)

内容已删除
3楼2013-08-23 13:24:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

燕彬sarah

铁虫 (初入文坛)

您好  我才接触sedumi,我把软件包放在MATLAB 路径下,请问之前我是不是应该安装一个编译器?
C:\BIN\MEX.PL: Error: Compile of 'bwblkslv.c' failed.

??? Error using ==> mex
Unable to complete successfully

Error in ==> install_sedumi at 113
    eval( temp );
请问如何安装这个程序包 谢谢
做学问
4楼2016-04-20 21:13:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 realfeifei 的主题更新
信息提示
请填处理意见