3
votes

Considering a discrete dynamical system where x[0]=rand() denotes the initial condition of the system.

I have generated an m by n matrix by the following step -- generate m vectors with m different initial conditions each with dimension N (N indicates the number of samples or elements). This matrix is called R. Using R how do I create a Toeplitz matrix, T? T Mathematically,

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

The toeplitz matrix 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]

I tried working with toeplitz(R) but the dimension changes. The dimension should no change, as seen mathematically.

1
First of all you're not using m different initial conditions. The value x(1) will never change. Every for-loop iteration will start from the very same value.AlessioX
@Alessiox: Sorry, that was a typo. I have fixed that.Sm1
You should re-define your problem though. It's not very clear what you're asking. The R matrix basically contains all your m sequences/signals, each of length N. So when describing R you're using (correctly) both the index n (discrete time) and m (sequence index). In T as instead you're mixing things up.AlessioX
THank you for your help and suggestions. I am not quite sure if I understand the structure of the toeplitz matrix correctly. The Question is based on the paper titled, "Toeplitz structured chaotic sensing matrix for compressive sensing". The download link is hal.archives-ouvertes.fr/inria-00530050/documentSm1
Section B, Pg 4 contains the Toeplitz matrix. COuld you please have a look at it?In my code, I have taken the Transpose of R which was generated from the discrete dynamical system, which is a chaotic map x, and the dimension of this matrix is N by m where m different initial conditions are used to generate m different time series/signal of length N. In the paper this matrix is denoted by phi obtained from the chaotic map and phi is m by N under Section II, A below Eq(9). Then the AUthors take the toeplitz of phi, which is given in Section B.Sm1

1 Answers

4
votes

According to the paper provided (Toeplitz structured chaotic sensing matrix for compressive sensing by Yu et al.) there are two Chaotic Sensing Matrices involved. Let's explore them separately.

  1. The Chaotic Sensing Matrix (Section A)

It is clearly stated that to create such matrix you have to build m independent signals (sequences) with m different initials conditions (in range ]0;1[) and then concatenate such signals per rows (that is, one signal = one row). Each of these signals must have length N. This actually is your matrix R, which is correctly evaluated as it is. Although I'd like to suggest a code improvement: instead of building a column and then transpose the matrix you can directly build such matrix per rows:

R=zeros(m,N);
R(:,1)=rand(m,1); %build the first column with m initial conditions

Please note: by running randn() you select values with Gaussian (Normal) distribution, such values might not be in range ]0;1[ as stated in the paper (right below equation 9). As instead by using rand() you take uniformly distributed values in such range.

After that, you can build every row separately according to the for-loop:

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. The Toeplitz Chaotic Sensing Matrix (Section B)

It is clearly stated at the beginning of Section B that to build the Toeplitz matrix you should consider a single sequence x with a given, single, initial condition. So let's build such sequence:

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

Now, to build the matrix you can consider:

  • how do the first row looks like? Well, it looks like the sequence itself, but flipped (i.e. instead of going from 0 to n-1, it goes from n-1 to 0)
  • how do the first column looks like? It is the last item from x concatenated with the elements in range 0 to m-2

Let's then build the first row (r) and the first column (c):

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

Please note: in Matlab the indices start from 1, not from 0 (so instead of going from 0 to m-2, we go from 1 to m-1). Also end means the last element from a given array.

Now by looking at the help for the toeplitz() function, it is clearly stated that you can build a non-squared Toeplitz matrix by specifying the first row and the first column. Therefore, finally, you can build such matrix as:

T=toeplitz(c,r);

Such matrix will indeed have dimensions m*N, as reported in the paper.

Even though the Authors call both of them \Phi, they actually are two separate matrices.
They do not take the Toeplitz of the Beta-Like Matrix (Toeplitz matrix is not a function or operator of some kind), neither do they transform the Beta-Like Matrix into a Toeplitz-matrix.
You have the Beta-Like Matrix (i.e. the Chaotic Sensing Matrix) at first, and then the Toeplitz-structured Chaotic Sensing Matrix: such structure is typical for Toeplitz matrices, that is a diagonal-constant structure (all elements along a diagonal have the same value).