相关疑难解决方法(0)

使用下标访问值而不使用sub2ind

考虑矩阵M和存储在列IJ中的一组下标.我需要访问I&J指定的元素而不将它们转换为线性索引(即使用sub2ind).例如

M = [1 2 3;4 5 6;7 8 9];
I = [1 1 1];
J = [1 2 3];

VALS = [1 2 3];
Run Code Online (Sandbox Code Playgroud)

此外,由于I&J非常庞大,因此执行以下操作是不可行的:

VALS = diag(M(I,J));
Run Code Online (Sandbox Code Playgroud)

为了示范,这不是我想要的,

VALS = M(sub2ind(size(M),I,J));
Run Code Online (Sandbox Code Playgroud)

基本上sub2ind似乎花了很多时间,现在我正在寻找方法来访问这些元素而不将下标转换为索引.任何其他方式都是可行的,只要它比使用sub2ind的方法更快.

indexing matlab matrix multidimensional-array

6
推荐指数
1
解决办法
3787
查看次数

每列选择单独的行

X = [1 2;
     3 4];
c = [1 2]';
Run Code Online (Sandbox Code Playgroud)

我想找到一些方法来做我认为X(:,c)应该做的事情.把它写成for循环:

for i=1:n
   res(i) = X(i, c(i));
end
% res = [1 4]
Run Code Online (Sandbox Code Playgroud)

这样做有一个单一的声明/矢量化方式吗?

matlab octave

4
推荐指数
1
解决办法
302
查看次数