切比雪夫综合法的Matlab程序

在《自适应天线与相控阵》这门课中,了解到了关于理想低副瓣阵列设计的一些方法,其中切比雪夫等副瓣阵列设计方法是一种基础的方法,故将其设计流程写成maltab程序供以后学习使用。在此分享一下。 此方法全称为道尔夫-切比雪夫综合法,简称为切比雪夫综合法,是一种工程实际中常用的可控制副瓣电平的阵列天线综合方法。切比雪夫阵列的特点是: (1)等副瓣电平;
(2)在相同副瓣电平和相同阵列长度下主瓣最窄,为最佳阵列;
(3)单元数过多时,阵列两端单元激励幅度跳变大,使馈电困难。一般在雷达系统中,为了使其具有较高的抗干扰、抗反辐射导弹的能力,往往要求雷达天线的副瓣尽量低,而采用道尔夫-切比雪夫综合法以及进一步的泰勒综合法等设计的阵列天线就可以实现低副瓣。最早,道尔夫(c.l.dolph)利用切比雪夫函数来逼近天线阵列的阵因子函数,得到了这种严谨规范的综合方法。而且,经过前人研究,当天线单元n≤13时,切比雪夫阵列从中间到两端的激励分布是单调减小的;而当n>13时,阵列两端单元的激励开始出现跳变。所以对于大型阵列来说一般不宜采用切比雪夫方法综合阵列。所以下面的matlab程序正常工作在天线单元数n为3到13这个范围内。关于如何采用切比雪夫多项式去设计阵因子的具体技术步骤,另一篇文章较为详细地介绍了,此处不再赘述,大家可以在文尾或评论区查看。下面是可以综合设计天线单元从3到13单元的切比雪夫综合法的matlab程序: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
%% --------------------------------------------------------------------------
% 切比雪夫低副瓣阵列综合
% 设计一个间距为d,单元数为n,主副瓣电平比为rdb,扫描角度为theta0的切比雪夫阵列。
% 2019.11.10
%--------------------------------------------------------------------------
%% 初始数据赋值
clear
clc
n = 13;                                  %单元数n(3 if rem(n,2)==0                          %求和项数m(奇偶不同)
    m = n/2;
else
    m = (n-1)/2+1;
end
rdb = 26;                               % 主副瓣比(db值)
lamuda = 10;                            % 波长
d = 0.6*lamuda;                         % 单元间距
theta0 = 80/180*pi;                     % 扫描角度,相对于阵列排布方向的夹角
a = [1,0,0,0,0,0,0,0,0,0,0,0,0,0;       % chebyshev多项式tn(x) = cos(nu)= f(x)系数矩阵a
    0,1,0,0,0,0,0,0,0,0,0,0,0,0;        % 系数矩阵a每一行表示n,从n = 0开始
    -1,0,2,0,0,0,0,0,0,0,0,0,0,0;       % 列表示x的幂次方,从0次方开始
    0,-3,0,4,0,0,0,0,0,0,0,0,0,0;
    1,0,-8,0,8,0,0,0,0,0,0,0,0,0;
    0,5,0,-20,0,16,0,0,0,0,0,0,0,0;
    -1,0,18,0,-48,0,32,0,0,0,0,0,0,0;
    0,-7,0,56,0,-112,0,64,0,0,0,0,0,0;
    1,0,-32,0,160,0,-256,0,128,0,0,0,0,0;
    0,9,0,-120,0,432,0,-576,0,256,0,0,0,0;
    -1,0,50,0,-400,0,1120,0,-1280,0,512,0,0,0;
    0,-11,0,220,0,-1232,0,2816,0,-2816,0,1024,0,0;
    1,0,-72,0,840,0,-3584,0,6912,0,-6144,0,2048,0;
    0,13,0,-364,0,2912,0,-9984,0,16640,0,-13312,0,4096];
% 初始矩阵赋值
i = zeros(1,m);                         % 电流幅度矩阵
s = zeros(m,m);                         % 阵因子系数矩阵
s_compare = zeros(1,m);                 % 系数比对矩阵
r = 10^(rdb/20);                        % 非db 值的主副瓣比
x0 = 1/2*( (r+sqrt(r^2-1))^(1/(n-1))+...% 变量代换值x0
            (r-sqrt(r^2-1))^(1/(n-1))  );
%% 求s、s_compare和i
% 从系数矩阵中择选出m个求和项对应的系数s(奇偶分开讨论)
for i = 1:m
    if rem(n,2)==0                      % 偶数情况
        for j = 1:m                     % 第i行表示x的i次方,
            s(i,j) = a(2*j,2*i);        % 第j列表示第j个求和项系数(未除x0)
        end
        s_compare(i) = a(n,2*i);        % 比对矩阵,即下标为n-1的chebyshev多项式的系数
    else                                % 奇数情况
        for j = 1:m                    
            s(i,j) = a(2*j-1,2*i-1);   
        end
        s_compare(i) = a(n,2*i-1);    
    end
end
% 通过s和s_compare系数比对求出电流幅度
for k = 1:m
    i = m-k+1;
    if rem(n,2)==0                      % 偶数
        i(i) = (s_compare(i)*x0^(2*i-1) -...
            i*s(i,:)')/s(i,i);
    else                                % 奇数
        i(i) = (s_compare(i)*x0^(2*(i-1)) -...
            i*s(i,:)')/s(i,i);
    end
end
i = i/max(i);                         % 对i归一化
if rem(n,2)==0
    i_final = [fliplr(i),i];          % 最终的单元排列(左右对称)
else
    i_final = [fliplr(i),i(2:end)];
end
sprintf('天线单元归一化电流幅度:')
sprintf('%.3f  ',i_final)
%% 获得最终阵列方向图s_p
theta_rad = 0pi;
theta = theta_rad*180/pi;
u = pi*d/lamuda*( cos(theta_rad)- cos(theta0));
s_p = zeros(1,length(theta_rad));       % 最终方向图
for k = 1:m
    if rem(n,2)==0
        s_p = s_p + i(k)*cos((2*k-1)*u);% 偶数
    else
        s_p = s_p + i(k)*cos(2*(k-1)*u);% 奇数
    end
end
s_p_abs = abs(s_p);                     % 对s_p取绝对值
s_pdb = 20*log10(s_p_abs/max(s_p_abs)); % 对s_p取db值
%% 绘图
h = -ones(1,length(s_p_abs))*26;       % 根据预先设置的主副瓣比得到的参考曲线
% 直角坐标系
figure('numbertitle', 'off', 'name', 's parameter (abs)-plot');
plot(theta,s_p_abs,'b','linewidth',1.5)
xlabel('theta(°)')
ylabel('|s| ')
title('chebyshev低副瓣阵列直角坐标图')
figure('numbertitle', 'off', 'name', 's parameter (db)-plot');
plot(theta,h,'r--','linewidth',1.5)
hold on
plot(theta,s_pdb,'b','linewidth',1.5)
xlabel('theta(°)')
ylabel('|s| db')
title('chebyshev低副瓣阵列直角坐标图')
legend('预设副瓣参考曲线','方向图')
% 极坐标系
figure('numbertitle', 'off', 'name', 's parameter (db)-polar');
polarplot(theta_rad,h,'r--','linewidth',1.5)
hold on
polarplot(theta_rad,s_pdb,'b','linewidth',1.5)
thetalim([0 180]);
rmin = s_pdb(1,1);
rmax = max(s_pdb);
rlim([-50 rmax]);
title('chebyshev低副瓣阵列极坐标图')
legend('预设副瓣参考曲线rdb','方向图(db)')
下面即为一个示例:单元间距d=0.6λ、单元数13、主副瓣电平比26db、扫描角度80度(相对于单元排布方向)的切比雪夫阵列设计。归一化单元电流幅度比为:0.406  0.432  0.604  0.770  0.908  1.000  0.516  1.000  0.908  0.770  0.604  0.432  0.406
----end 上文提到的另一篇文章。 阵列天线综合之切比雪夫低副瓣阵列设计 matlab(作者:olivermahout)
相控阵天线中,直线阵列作为重要的一种,有着极为广泛的应用。切比雪夫低副瓣阵列设计是一种典型的设计方法。
切比雪夫方法主要是实现低副瓣、窄波束:
其产生的核心如下:
我的理解:因为能量守恒,所有副瓣都一样的时候,能量会更多的集中在副瓣中,
主瓣最大增益也不会改变,这样就可以使主瓣窄,副瓣电平降低。g=4πs/λ2
结合切比雪夫函数,可以得到:
当具体应用时,解决方案如下:
话不多说,其matlab中的程序如下:
1 % 2019-11% 切比雪夫低副瓣阵列馈电设计_1.0 (端射阵)
close all;clear% digits(3);
% 参数设置lamda = 1; % 波长d = lamda * 0.6; % d为阵元间距theta0 = (120/180)*pi; % 扫描角度theta = 0: 0.01 : pi; % θ为方向角u = pi*d*(cos(theta)-cos(theta0))/lamda; %t = chebyshev; % t为切比雪夫恒等式系数矩阵n = 10; % n为直线阵的阵元数量,m为一侧的单元数(对称)r0db = 26; % r0db为副瓣电平
if (mod(n,2)==0)m = n / 2;parity = 0; % parity为奇偶性,0为偶数elsem = (n+1)/2;parity = 1;end
% 导入切比雪夫多项式syms x; t = [1;x;2*x^2-1;4*x^3-3*x;8*x^4-8*x^2+1;16*x^5-20*x^3+5*x;32*x^6-48*x^4+18*x^2-1;64*x^7-112*x^5+56*x^3-7*x;128*x^8-256*x^6+160*x^4-32*x^2+1;256*x^9-576*x^7+432*x^5-120*x^3+9*x;512*x^10-1280*x^8+1120*x^6-400*x^4+50*x^2-1];
% 换算副瓣电平r0r0 = 10 ^ (r0db / 20);
% 计算x0x0 = ((r0 + sqrt(r0^2 -1))^(1/(n-1)) + (r0 - sqrt(r0^2 -1))^(1/(n-1))) * 1/2;
% 定义馈电幅度矩阵ii = sym('i', [1 m]);
% 计算展开的方向图表达式s = t(2) * i(1);
for k = 2 : ms = s + t(2*k) * i(k);end
%collect(s,x)%vpa(s)
s_po = coeffs(s,x); % 含电流的方向图多项式系数t_po = sym2poly(t(n)); % 标准的方向图多项式系数(反向了)t_po = zeros(1,m); for k = 1 : mt_po(k) = t_po(2*k-1);s_po(k) = s_po(k)/x0^(2*k-1);end% t_po% vpa(s_po)
% 系数比较求出电流大小eq = sym('eq',[m 1]); % 系数比较恒等式for k = 1 : meq(k) = s_po(k) == t_po(m+1-k);end
vpa(eq)i_st = solve(eq);i_ce = struct2cell(i_st);i = zeros(m,1); % 最终的电流矩阵for k = 1 : mi(k) = i_ce{k,1};i(k) = i(k);endfor k = 2 : mi(k) = i(k)/i(1); % 电流归一化endi(1) = 1; ii=[1;0.89;0.706;0.485;0.357]; % 用来检验的数据
% 计算最终的阵因子s_all = zeros(1,length(theta));for k = 1 : ms_all = s_all + i(k)*cos((2*k-1)*u);endss = s_all;
% 画图 —— 直角坐标系s_max = max(s_all); % 归一化处理s_all = 20*log10(abs(s_all/s_max)); % 取分贝值figure('numbertitle', 'off', 'name', 's parameter (db) - cartesian');theta_ = theta * 180 / pi;plot(theta_,s_all,'k','linewidth',1.5);grid offxlabel(' heta (°)','fontsize',13);ylabel('|s| db','fontsize',12);axis([0 182 -50 2]);box on
% 画图 —— 极坐标系figure('numbertitle', 'off', 'name', 's parameter (db) - polar');s_pol = ss / max(ss);polarplot(theta,s_all,'k','linewidth',1.5);thetalim([0 180]);rmin = min(s_all);rmax = max(s_all);rlim([-50 rmax]);
上述测试的n=10的10个阵列,侧射阵(θ=0),副瓣电平sll=26db,结果如下:
经过比较,结果较为标准。
更改一下theta0的值,改为120读,即偏离法相30度:


莱迪思MachXO3 FPGA系列 助力新兴互连接口设计
和沐渥一起探讨:常用的控制板加工制造设备有哪些?
物联网风险意识在消费者和企业之间存在差异
十款智能遥控小车设计
索尼将发售限量版PS4 TPCast多用户无线VR套件正式面向欧洲发布
切比雪夫综合法的Matlab程序
夜视应用的CMOS图像传感器的特性和说明
一加5什么时候发布?会不会又是有价无市?
英国首相表示就美国政府对华为制裁所产生的影响
脑机接口技术发展现状及困境解析
小米6最新消息:小米6备货充足!全球第一部量产版小米6已发货,有图有真相
小米Note3和小米MIX2在9月11日同天发布?小米高端旗舰来袭,价格2899起
魅族科技高级副总裁李楠离职,准备创业方向为机械键盘
电商激发中东欧物流蓬勃商机
大众集团前9月的新能源汽车销量组成
分光光度计用途_分光光度计组成部分
mipi协议里面csi和dsi是什么意思
Q2小米智能手机出货量3910万台,排名世界第三
华大北斗斩获2021年“中国芯”优秀技术创新产品奖
当channel关闭后再去读取数据会出现啥情况