matlab浮点数求绝对值_MATLAB仿真阵列天线切比雪夫综合法(附代码)
來源:cnblogs
在《自適應天線與相控陣》這門課中,了解到了關于理想低副瓣陣列設計的一些方法,其中切比雪夫等副瓣陣列設計方法是一種基礎的方法,故將其設計流程寫成maltab程序供以后學習使用。在此分享一下。?此方法全稱為道爾夫-切比雪夫綜合法,簡稱為切比雪夫綜合法,是一種工程實際中常用的可控制副瓣電平的陣列天線綜合方法。切比雪夫陣列的特點是:(1)等副瓣電平;
(2)在相同副瓣電平和相同陣列長度下主瓣最窄,為最佳陣列;
(3)單元數過多時,陣列兩端單元激勵幅度跳變大,使饋電困難。一般在雷達系統(tǒng)中,為了使其具有較高的抗干擾、抗反輻射導彈的能力,往往要求雷達天線的副瓣盡量低,而采用道爾夫-切比雪夫綜合法以及進一步的泰勒綜合法等設計的陣列天線就可以實現(xiàn)低副瓣。最早,道爾夫(C.L.Dolph)利用切比雪夫函數來逼近天線陣列的陣因子函數,得到了這種嚴謹規(guī)范的綜合方法。而且,經過前人研究,當天線單元N≤13時,切比雪夫陣列從中間到兩端的激勵分布是單調減小的;而當N>13時,陣列兩端單元的激勵開始出現(xiàn)跳變。所以對于大型陣列來說一般不宜采用切比雪夫方法綜合陣列。所以下面的Matlab程序正常工作在天線單元數N為3到13這個范圍內。關于如何采用切比雪夫多項式去設計陣因子的具體技術步驟,另一篇文章較為詳細地介紹了,此處不再贅述,大家可以在文尾或評論區(qū)查看。下面是可以綜合設計天線單元從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 = 0:0.01:pi; 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)') |
陣列天線綜合之切比雪夫低副瓣陣列設計 MATLAB(作者:OLIVERMAHOUT)
相控陣天線中,直線陣列作為重要的一種,有著極為廣泛的應用。切比雪夫低副瓣陣列設計是一種典型的設計方法。
切比雪夫方法主要是實現(xiàn)低副瓣、窄波束:
其產生的核心如下:
我的理解:因為能量守恒,所有副瓣都一樣的時候,能量會更多的集中在副瓣中,
主瓣最大增益也不會改變,這樣就可以使主瓣窄,副瓣電平降低。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('\theta (°)','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度:
?
來源:cnblogs
總結
以上是生活随笔為你收集整理的matlab浮点数求绝对值_MATLAB仿真阵列天线切比雪夫综合法(附代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 主机挂载存储_备战CKA每日一题——第3
- 下一篇: matlab排版形式是什么样子,工作型P