从两个<nx1>列向量构建3by3n矩阵</nx1>

时间:2013-02-17 18:46:14

标签: matlab loops optimization

我有两个大小为<nx1>的列向量。 config向量仅包含数字721,722,723 and 724,大小为length的{​​{1}}向量仅包含数字。我需要构建矩阵Z,其大小为<nx1><3x3n>这里的规则很难说,让我先试着举个例子:

note:matrices a,b,c and d are each <3x3> matrices.

length=[1 2 3],config=[721 722 723],a=eye(3),b=ones(3),c=magic(3);
     

即,如果config(i)为722且length(i)为2,则将2 * matrix_a附加到z矩阵,依此类推。

我做了以下事情:

z=[ 1     0     0     2     2     2    24     3    18
    0     1     0     2     2     2     9    15    21
    0     0     1     2     2     2    12    27     6]

但是没有更好的无循环矢量化方法吗?

1 个答案:

答案 0 :(得分:1)

我不确定您是否还需要此信息,但我找到了解决方案:

a =

     1     0     0
     0     1     0
     0     0     1

b =

     1     1     1
     1     1     1
     1     1     1

c =

     8     1     6
     3     5     7
     4     9     2

result =

     3     3     3     4     4     4    40     5    30    48     6    36     7     0     0
     3     3     3     4     4     4    15    25    35    18    30    42     0     7     0
     3     3     3     4     4     4    20    45    10    24    54    12     0     0     7

我的数据结果:

{{1}}