在MATLAB中构造矩阵

时间:2015-04-28 20:28:41

标签: matlab

我想在MATLAB中构建几个矩阵。编程不是我的强项,我不能进入这个。我知道我应该用for循环嵌套,但是不能弄清楚如何。我有一个带有T值的数据y。我需要设置滞后m,然后找到Tm = T-2m + 1。矩阵Ymin和Yplus的阶数为m x Tm,但不知道如何设置它们。括号中数组中数据的位置。对不起格式。矩阵是:

      y(m)      y(m+1)   ...   y(T-m)
      y(m-1)    y(m)     ...   y(T-m-1) 
        .
        .
        .
       y(1)      y(2)    ...   y(Tm)

      y(m+1)    y(m+2)     ...   y(T-m+1)
      y(m+2)    y(m+3)     ...   y(T-m-2) 
        .
        .
        .
       y(2m)      y(2m+1)  ...   y(T)

3 个答案:

答案 0 :(得分:3)

使用bsxfun获取这两个矩阵的一种方法 -

T = numel(y) %// number of elements in y

idx1 = bsxfun(@plus,[m:-1:1]',0:Tm-1)
out1 = y(idx1)

idx2 = bsxfun(@plus,[m+1:2*m]',0:Tm-1)
out2 = y(idx2)

答案 1 :(得分:1)

希望以下%by Mark 4/28/2015 clear all; %%%%%%%%%%%%%%%%% take an example m=4; T=10; y=zeros(1,T); for i=1:(T) y(i)=i; end %%%%%%%%%%%%%%%%%%%%%% calculate Ymin count_i=0; for i=m:1:(T-m) count_i=count_i+1; count_j=0; for j=i:(-1):(i-m+1) count_j=count_j+1; Ymin(count_j,count_i)=y(j); end end Ymin %%%%%%%%%%%%%%%%%%%%%% calculate Ymax count_i=0; for i=(m+1):1:(T-m+1) count_i=count_i+1; count_j=0; for j=i:1:(i+m-1) count_j=count_j+1; Ymax(count_j,count_i)=y(j); end end Ymax 代码可以为您提供帮助!

mkdir -p "${destination}/$1/Versions/A/Headers"

答案 2 :(得分:0)

您可以使用hankeltoeplitz个功能。

首次使用矩阵

flipud(hankel(y(1:m), y(m:Tm))

toeplitz(y(m:-1:1), y(m:Tm))

对于第二个矩阵使用

hankel(y(m+1:2*m), y(2*m:T))