首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab:如何将矩阵转换为Toeplitz矩阵

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

Stack Overflow用户
提问于 2016-02-24 18:23:28
回答 1查看 2K关注 0票数 3

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

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

代码语言:javascript
复制
 R =               [ x_0[0], ....,x_0[n-1];
                    ...,        ,.....;
                    x_m[0],.....,x_m[n-1]]

toeplitz矩阵T =

代码语言:javascript
复制
                        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),但是维度发生了变化。从数学上看,尺寸不应改变。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-26 21:26:49

根据本文给出的(Toeplitz结构的混沌感知矩阵,用于压缩感知,由Yu等人.)其中涉及两个混沌传感矩阵。让我们分别探索它们。

  1. 混沌传感矩阵(A节)

我们清楚地指出,要创建这样的矩阵,您必须构建具有m独立信号(序列)的m不同的首字母条件(在范围内);1[),然后将这些信号串联到每行(即一信号=一行)。这些信号中的每一个必须有长度N。这实际上是你的矩阵R,它被正确地计算出来。虽然我想建议进行代码改进:而不是构建一个列,然后转到矩阵中,您可以直接构建每一行这样的矩阵:

代码语言:javascript
复制
R=zeros(m,N);
R(:,1)=rand(m,1); %build the first column with m initial conditions

请注意:通过运行randn(),您选择了高斯(正态分布)分布的值,这些值可能不在0;1的范围内(正如本文所述(方程9下面)。相反,通过使用rand(),您可以在这样的范围内获得均匀分布的值。

之后,您可以根据for-循环分别构建每一行:

代码语言:javascript
复制
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。因此,让我们构建这样的序列:

代码语言:javascript
复制
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

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

  • 第一行看起来怎么样?它看起来像序列本身,但是翻转了(也就是说,它不是从n-1转到n-1,而是从n-1转到n-1)。
  • 第一列是什么样子?它是从x连接到m-2范围内的元素的最后一项。

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

代码语言:javascript
复制
r=fliplr(x);
c=[x(end) x(1:m-1)];

请注意:在Matlab中,指数从1开始,而不是从0开始(因此,我们不是从1到m-2,而是从1到m-1)。end也意味着来自给定数组的最后一个元素。

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

代码语言:javascript
复制
T=toeplitz(c,r);

正如本文所报道的那样,这样的矩阵确实具有维数m*N

尽管作者称它们为\Phi,但它们实际上是两个独立的矩阵。

它们不取类Beta矩阵的Toeplitz矩阵(Toeplitz矩阵不是某种函数或算子),也不把Beta样矩阵转换成Toeplitz矩阵。

首先是Beta类矩阵(即混沌传感矩阵),然后是Toeplitz结构的混沌感知矩阵:这种结构对于Toeplitz矩阵来说是典型的,也就是一个对角常数结构(沿对角的所有元素都有相同的值)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35610045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档