在matlab中将整行分配给另一个矩阵的多行

时间:2014-04-29 05:08:27

标签: matlab

我有一个13比3的矩阵叫做face。

face =

     1     1     1
     1     1     1
     1     0     0
     1     1     1
     1     1     1
     1     0     0
     1     0     0
     1     1     1
     1     1     1
     1     1     1
     1     1     1
     0     0     0
     0     0     0

我有一个数组newset1,它包含矩阵行的索引' face'必须分配一个新值。

newset1 = [5,1,7]

"新价值"是一个如下所示的矢量

value = [7,8,9]

我知道如何访问应更新其值的行。像这样 :    面(newset1,:)

ans =

     1     1     1
     1     1     1
     1     0     0

我想做这样的事情

face(newset1,:) = value

让我的输出看起来像这样:

face =

     7     8     9
     1     1     1
     1     0     0
     1     1     1
     7     8     9
     1     0     0
     7     8     9
     1     1     1
     1     1     1
     1     1     1
     1     1     1
     0     0     0
     0     0     0

但是我收到以下错误。

  

订阅的分配维度不匹配。

这对我来说很有意义,我正在做什么,但由于它不起作用,我很确定我错了。我也不想使用for循环,因为我已经读过matlab会减慢循环速度。

1 个答案:

答案 0 :(得分:3)

尝试使用repmat()函数。见这里:MATLAB: duplicating vector 'n' times

可以实现所需的输出
face(newset1,:)=repmat(value,length(newset1),1)