0

我有 (1:10),<10 x 1> 双倍的矩阵 (a)。我想复制这些值并将它们按列重新排列到另一个矩阵变量中。(b)。请参见下面的示例。另外,什么方法在这项任务中最有效?

matrix a    matrix b

1            1
2            2  2
3            3  3  3  
4            4  4  4  4
5            5  5  5  5  5
6            6  6  6  6  6  6
7            7  7  7  7  7  7  7
8            8  8  8  8  8  8  8  8
9            9  9  9  9  9  9  9  9  9
10           10 10 10 10 10 10 10 10 10 10

更新:你好再次Amro。如果我想定义要复制的值怎么样。请参见下面的示例:

matrix a    matrix b
column:      1  2  3  4  5  6  7

1            1
2            2  2
3               3  3  
4                  4  
5                     5  
6                     6     
7                        7  
8                        8     
9                           9  
10                         10 10 
4

2 回答 2

2

尝试:

>> a = (1:10)'
a =
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10

>> b = tril(repmat(a,1,10))
b =
     1     0     0     0     0     0     0     0     0     0
     2     2     0     0     0     0     0     0     0     0
     3     3     3     0     0     0     0     0     0     0
     4     4     4     4     0     0     0     0     0     0
     5     5     5     5     5     0     0     0     0     0
     6     6     6     6     6     6     0     0     0     0
     7     7     7     7     7     7     7     0     0     0
     8     8     8     8     8     8     8     8     0     0
     9     9     9     9     9     9     9     9     9     0
    10    10    10    10    10    10    10    10    10    10
于 2012-06-21T06:33:45.377 回答
1

我认为在您指定的第二个矩阵中您犯了一个错误。我假设你想做这样的事情:

b =

 1     0     0     0     0     0
 2     2     0     0     0     0
 0     3     3     0     0     0
 0     0     4     4     0     0
 0     0     0     5     5     0
 0     0     0     0     6     6

这很简单:

%define vector of arbitrary length
a=1:6;
%generate b with shifted diagonal matrices
b=diag(a)+diag(a(2:end),-1);

diag 的第二个参数只是移动生成的对角线。

于 2012-06-21T07:31:12.850 回答