Matlab:如何将矩阵转换为Toeplitz矩阵

时间:2016-02-24 18:23:28

标签: matlab matrix toeplitz

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

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

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

toeplitz矩阵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),但维度发生了变化。从数学上看,维度不应该改变。

1 个答案:

答案 0 :(得分:4)

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

  1. 混沌传感矩阵( A 部分
  2. 明确指出,要创建这样的矩阵,您必须构建m个独立信号(序列),其中m个不同的首字母条件(在范围内)0; 1 [)然后连接这些信号行(即一个信号=一行)。这些信号中的每一个必须具有长度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
    
    1. Toeplitz混沌传感矩阵( B 部分)
    2. 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
      

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

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

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

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

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

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

      T=toeplitz(c,r);
      

      如文章所述,这样的矩阵确实具有m*N维。

      即使作者同时称他们为Phi,他们实际上是两个独立的矩阵 他们采用Beta-Like矩阵的Toeplitz(Toeplitz矩阵不是某种函数或算子),它们也不会将Beta-Like矩阵转换为Toeplitz矩阵。 /> 你首先有类Beta矩阵(即混沌传感矩阵),然后是Toeplitz- 结构混沌传感矩阵:这样的结构是Toeplitz矩阵的典型特征,是一个对角线常数结构(沿对角线的所有元素具有相同的值)。