在Matlab中,有没有一种方法可以根据矢量中的元素选择矩阵元素?我认为我的描述不明确,但是我实际上想要做的事情类似于:
A=zeros(3,3,3) %3d matrix
A(1,1,2)=5
b=[1,1,2]
A(b)=5
意思是一种使用向量中的条目作为参数从矩阵中选择一个元素的简单方法。这个确切的示例不起作用,因为最后一行将b视为单个参数,而不是三个。我可以写A(b(1),b(2),b(3)),但我真正要寻找的是是否有一种不错的方法。
1 个答案:
答案 0 :(得分:0)
方法1:使用sub2ind查找线性索引
您可以定义一个名为findLinearIndex
的函数,以便将向量元素转换为A
的线性索引:
findLinearIndex = @(A,b) sub2ind(size(A), b(1), b(2), b(3))
A(findLinearIndex(A,b)) = 5
方法2:通过num2cell
将向量转换为单元格数组
然后,您可以使用{:}
来获取索引
b_cell = num2cell(b) ;
A(b_cell{:}) = 5