【问题标题】:Selecting Matrix element using vector elements [duplicate]使用向量元素选择矩阵元素[重复]
【发布时间】:2019-05-13 12:37:15
【问题描述】:

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)) 但我真正在这里寻找的是是否有一种好的方法。

【问题讨论】:

  • 我想使用sub2ind(),但sub2ind(size(A),b) 显然将b 中的每个元素分开处理...
  • @Adriaan 因为它的sub2ind(size(A),b(:,1),b(:,2),b(:,3))
  • 可以使用元胞数组代替向量:b={1,1,2}; A(b{:}) = 5;

标签: matlab matrix


【解决方案1】:

方法一:使用sub2ind求线性索引

您可以定义一个名为findLinearIndex 的函数,以便将向量元素转换为A 的线性索引:

findLinearIndex = @(A,b) sub2ind(size(A), b(1), b(2), b(3))
A(findLinearIndex(A,b)) = 5

方法二:通过num2cell将向量转化为元胞数组

然后,您可以使用{:} 获取索引

b_cell = num2cell(b) ;
A(b_cell{:}) = 5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 2020-11-11
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多