我有一个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会减慢循环速度。
答案 0 :(得分:3)
尝试使用repmat()函数。见这里:MATLAB: duplicating vector 'n' times。
可以实现所需的输出
face(newset1,:)=repmat(value,length(newset1),1)