3

考虑一个离散的动态系统,其中x[0]=rand()表示系统的初始条件。

我通过以下步骤生成了一个 m x n 矩阵——生成m具有m不同初始条件的向量,每个向量都有维度N(N 表示样本或元素的数量)。该矩阵称为 R。如何使用 R 创建 Toeplitz 矩阵T?数学上,

 R =               [ x_0[0], ....,x_0[n-1];
                    ...,        ,.....;
                    x_m[0],.....,x_m[n-1]]

托普利兹矩阵T=

                        x[n-1], x[n-2],....,x[0];
                        x[0], x[n-1],....,x[1];
                          :    :           :
                         x[m-2],x[m-3]....,x[m-1]

我尝试使用,toeplitz(R)但尺寸发生了变化。从数学上看,尺寸应该没有变化。

4

1 回答 1

4

根据提供的论文( Yu 等人的用于压缩感知的 Toeplitz 结构混沌感知矩阵),涉及到两个混沌感知矩阵。让我们分别探索它们。

  1. 混沌感知矩阵(A部分)

明确指出,要创建这样的矩阵,您必须构建m具有不同初始条件(范围 ]0;1[)的独立信号(序列)m,然后每行连接此类信号(即,一个信号 = 一行)。这些信号中的每一个都必须有长度N。这实际上是您的 matrix 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
  1. Toeplitz 混沌传感矩阵(B部分)

在B节的开头明确指出,要构建 Toeplitz 矩阵,您应该考虑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

现在,要构建矩阵,您可以考虑:

  • 第一行怎么样?好吧,它看起来像序列本身,但是被翻转了(即不是从0n-1,而是从n-10
  • 第一列如何?它是与0m-2x范围内的元素连接的最后一项

然后让我们构建第一行 ( r) 和第一列 ( c):

r=fliplr(x);
c=[x(end) x(1:m-1)];

请注意:在 Matlab 中,索引从 1 开始,而不是从 0 开始(所以我们不是从0m-2,而是从1m-1)。也end表示给定数组的最后一个元素。

现在通过查看toeplitz()函数的帮助,可以清楚地说明您可以通过指定第一行和第一列来构建非平方 Toeplitz 矩阵。因此,最后,您可以构建这样的矩阵:

T=toeplitz(c,r);

如本文所述,这样的矩阵确实会有维度m*N

尽管作者将它们都称为 \Phi,但它们实际上是两个独立的矩阵。
他们采用 Beta-Like 矩阵的 Toeplitz(Toeplitz 矩阵不是某种函数或算子),也没有将 Beta-Like 矩阵转换为 Toeplitz 矩阵。
首先是 Beta-Like 矩阵(即混沌感知矩阵),然后是 Toeplitz结构的混沌感知矩阵:这种结构是 Toeplitz 矩阵的典型结构,即对角线常数结构(对角线上的所有元素都有相同的值)。

于 2016-02-26T21:26:49.660 回答