提供された論文 ( Yu らによる圧縮センシングのための Toeplitz 構造化カオスセンシングマトリックス) によると、2 つのカオスセンシングマトリックスが関係しています。それらを個別に調べてみましょう。
- カオス感覚マトリックス (セクションA )
m
このような行列を作成するには、異なる初期条件 (範囲 ]0;1[) を持つ独立した信号 (シーケンス)を構築し、そのような信号を行ごとに連結する必要があることが明確に述べられていm
ます (つまり、1 つの信号 = 1 つの行)。これらの各信号には length が必要N
です。これは実際にはあなたのマトリックスR
であり、そのまま正しく評価されます。コードの改善を提案したいと思いますが、列を構築してから行列を転置する代わりに、行ごとにそのような行列を直接構築できます。
R=zeros(m,N);
R(:,1)=rand(m,1); %build the first column with m initial conditions
注意:randn()
ガウス (正規) 分布の値を選択して実行すると、そのような値は論文に記載されているように [0;1] の範囲にない場合があります (式 9 のすぐ下)。代わりに、使用rand()
することで、そのような範囲で均一に分散された値を取ります。
その後、for ループに従ってすべての行を個別に作成できます。
for i=1:m
for j=2:N %skip first column
R(i,j)=4*R(i,j-1)*(1-R(i,j-1));
R(i,j)=R(i,j)-0.5;
end
end
- テプリッツ カオス センシング マトリックス (セクションB )
セクションBの冒頭で、テプリッツ行列を作成するにx
は、与えられた単一の初期条件を持つ単一のシーケンスを考慮する必要があることが明確に述べられています。それでは、そのようなシーケンスを構築しましょう:
x=rand();
for j=2:N %skip first element
x(j)=4*x(j-1)*(1-x(j-1));
x(j)=x(j)-0.5;
end
ここで、考慮できるマトリックスを作成します。
- 最初の行はどのように見えますか?ええと、シーケンス自体のように見えますが、反転しています (つまり、0からn-1に移動する代わりに、 n-1から0に移動します)
- 最初の列はどのように見えますか? 範囲0からm-2
x
の要素と連結された最後のアイテムです。
r
次に、最初の行 ( ) と最初の列 ( ) を作成しましょうc
。
r=fliplr(x);
c=[x(end) x(1:m-1)];
注意: Matlab では、インデックスは 0 からではなく 1 から始まります (したがって、0からm-2に移動する代わりに、 1からm-1に移動します)。またend
、特定の配列の最後の要素を意味します。
関数のヘルプを見るtoeplitz()
と、最初の行と最初の列を指定することで非二乗テプリッツ行列を作成できることが明確に示されています。したがって、最終的に、次のようなマトリックスを作成できます。
T=toeplitz(c,r);
m*N
このような行列には、論文で報告されているように、実際に次元があります。
著者は両方とも \Phi と呼んでいますが、実際には 2 つの別個の行列です。
それらは、ベータ様行列のテプリッツを取りません(テプリッツ行列は、ある種の関数または演算子ではありません)、ベータ様行列をテプリッツ行列に変換することもありません。
最初にベータ様マトリックス (つまり、カオス センシング マトリックス) があり、次にテプリッツ構造のカオス センシング マトリックスがあります。このような構造は、対角定数構造 (対角線に沿ったすべての要素が同じ値)。