スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【MUSIC】SCILAB版 その1

SCILAB版を作成。

/////////////////////////////////////////////
//// ANT受信信号生成
//// 生成ファイル"array_data.dat"
//// scilab変数を保存したファイル
/////////////////////////////////////////////

clear
//load sig_data // 変調波信号の読み込み

FILE_PASS = 'C:\scilab_works\MUSIC\';
FILE_NAME = 'array_data.dat';


///////////////// 信号生成 /////////////////
OS = 10; //オーバーサンプル数
n = 1:2048;
f1 = 1;
f2 = 2;
f3 = 3;
s1 = cos(2*%pi*f1/OS*n);
s2 = cos(2*%pi*f2/OS*n);
s3 = cos(2*%pi*f3/OS*n);
///////////////////////////////////////////


//
j = sqrt(-1); // jは複素数
m = 8; // m : アレー素子数
p = 3; // p:到来波数
fc = 1e9; // 搬送波の周波数(1GHz)
c = 3e8; // 伝搬速度
wavelen = c/fc; // 搬送波の波長
d = wavelen/2; // 素子間隔(半波長)
theta = [ 85; 40; -20]; // 入射角の設定
nn = 1024; // nn:データ数
sn1 = 5; // 信号1のSNR (dB)
sn2 = 5; // 信号2のSNR (dB)
sn3 = 5; // 信号3のSNR (dB)
SN = [ sn1; sn2; sn3 ]; // 各信号のSN比
sn = SN(1:p); // SNベクトルの定義
deg2rad = %pi/180; // ラジアンへの変換係数
//
// 信号源ベクトルの作成
tt = 1:nn;
//SS = [ s1(tt).'; s2(tt).'; s3(tt).'];
SS = [ s1(tt); s2(tt); s3(tt)];
S = SS(1:p,:);
// 観測雑音の生成
nr = rand(m,nn); //real
ni = rand(m,nn); //imag
U = nr+j*ni;
//
// SNの計算
//
Ps = S*S'/nn; // (ΣS)/nn
ps = diag(Ps); // 対角行列 ⇒ 各信号電力
refp= 2*10.^(sn/10); // SN真数変換 , "2"乗算は不明
tmp=sqrt(refp./ps); // SN調整して、各信号を電圧へ
S2 = diag(tmp)*S; // 対角化し、各SN値を各信号にのみ乗算
//S2 = [tmp(1,1)*S(1,:); tmp(2,1)*S(2,:); tmp(3,1)*S(3,:)]; と同等

//
// ステアリング行列の作成
//
a2=-j*2*%pi*([0:m-1]'*sin(theta'*deg2rad))*d/wavelen;
A = exp(a2); //行:ANT番号 列:信号種類(到来数)
//
// アレーアンテナ受信信号の計算
X = A*S2+U; //ステアリング*信号+ノイズ、信号内には各諸元をもつ波形の合成
//
// 相関行列と逆行列の計算
Rxx = X*X'/nn;
Rinv = inv(Rxx);
//
save (FILE_PASS + FILE_NAME, 'X', 'A', 'S2', 'U', 'Rxx', 'Rinv', 'm', 'nn', 'wavelen', 'd', 'deg2rad', 'theta', 'p');
スポンサーサイト

コメント

非公開コメント
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。