如何最好地构造一个矩阵,该矩阵的元素恰好是其索引或Matlab中索引的函数?

阿盖尔

构造矩阵恰好是其在Matlab中的索引的矩阵的最佳方法是什么?


编辑:这个问题的现有答案适用于如何构建一个矩阵,其元素是其索引的函数所以我将其添加到问题标题中。


格式可以是将向量作为元素的矩阵,也可以是两个分别存储一个索引的矩阵。

最后,我想创建一个矩阵,其元素是其索引的函数。因此,非常感谢一种有效的方法(但可能有所不同)。欢迎对效率发表任何评论。

对于我的应用程序,矩阵的大小往往会很大(最小尺寸为数百平方)。结果,利用本机Matlab函数的方法可能比for / while循环要好得多。

例如,对于大小为[2 2]的矩阵,我想选择

IND = 
[1 1]  [1 2]
[2 1]  [2 2]

或者

X = 
1 1
2 2
Y =
1 2
1 2

最后,我希望做些类似的事情

matrixIneed = arrayfun(@(s)..., IND)

其中s是大小为2的向量,或者

matrixIneed = arrayfun(@(i,j)..., X,Y)

后者是优选的。


编辑:关于接受的答案的说明。

我接受了安德鲁的回答,因为它对我来说很直观,并且代码看起来很快捷(至少对我而言)。

如果您曾经向Google提出过此问题的答案,那么您可能会像我一样担心性能。(否则,如果不是最佳实践,则任何人都可以想到双重循环来完成任务。)

如果是这样,我们鼓励您检查Andrew对reshape()函数的评论以及Rody关于meshgrid()and的性能的答案loops

尽管如此,waywaywalk的解决方案仍meshgrid()是学习该meshgrid()功能的有用示例它在许多其他Matlab函数中很有用。

Jigg的repmat()解决方案也可以为您提供帮助。

安德鲁·扬克

看一看的ind2subsub2indreshape功能。它们对于转换多维数组上的下标和索引很有用。

在您的情况下,看起来像您想要的。(我认为您希望使用“下标”而不是“索引”。当将数组视为一维矢量时,Matlab使用“索引”表示元素的“线性”索引,而使用“下标”表示沿每个元素的位置多维数组的维度。)

sz = [3 3];  % Size of your matrix
n = prod(sz); % Total number of elements in matrix
[X, Y] = ind2sub(sz, 1:n);  % Subscripts, returned as vectors
X = reshape(X, sz);  % Reshape the subscript vectors to match your matrix
Y = reshape(Y, sz);

meshgrid@thewaywewalk提供方法将产生相同的输出,但是我认为ind2sub这种情况下方法更具可读性,因为它是根据数组索引(这是您的问题领域)来措辞的。而且它将泛化到对切片或数组的任意子集进行处理,meshgrid而不会这样做,并且恰好对应ind2sub于高效操作的另一种方式。meshgrid尽管如此,还是值得学习的;它会在其他位置弹出。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何最好地构造一个矩阵,其元素恰好是其索引或Matlab中的索引函数?

来自分类Dev

根据另一个矩阵中的值将一个矩阵的元素求和成一个数组

来自分类Dev

如何基于另一个矩阵的值在矩阵中设置索引值

来自分类Dev

MATLAB:使用小矩阵的元素高效构造大矩阵

来自分类Dev

如何使矩阵的元素可调用函数

来自分类Dev

MATLAB:在一个索引上将两个矩阵按元素相乘?

来自分类Dev

如何根据另一个矩阵中元素的顺序在Matlab中重新排列矩阵中的元素?

来自分类Dev

矩阵元素根据Matlab中的索引变化

来自分类Dev

将一个矩阵分配为另一个矩阵的元素

来自分类Dev

如何用另一个矩阵的值(使用Rcpp)替换C ++中矩阵的元素?

来自分类Dev

在Matlab中另一个单元格中搜索矩阵的元素

来自分类Dev

在R中索引矩阵的元素

来自分类Dev

用R-索引中的另一个矩阵对一个矩阵进行索引超出范围

来自分类Dev

花式索引一个numpy矩阵:每行一个元素

来自分类Dev

如何从该矩阵生成的列表中获取矩阵中元素的索引?

来自分类Dev

如何将一个矩阵的元素替换为另一个

来自分类Dev

根据另一个矩阵中的值将一个矩阵的元素求和到一个数组中

来自分类Dev

R:从另一个矩阵的元素减去一个矩阵的元素

来自分类Dev

如何编写一个伪代码来计算矩阵的元素?

来自分类Dev

使用矩阵元素作为另一个矩阵的索引

来自分类Dev

如何根据另一个矩阵中元素的顺序在Matlab中重新排列矩阵中的元素?

来自分类Dev

将一个矩阵分配为另一个矩阵的元素

来自分类Dev

从零矩阵构造一个简单的索引矩阵

来自分类Dev

基于起始索引和终止索引的另一个矩阵的索引矩阵

来自分类Dev

如何不使用for循环而参考列索引向量更改矩阵的元素?

来自分类Dev

通过numpy中的索引数组从另一个矩阵填充空矩阵的行

来自分类Dev

如何访问索引来自数学运算的 nD 矩阵的元素

来自分类Dev

MATLAB:如何按索引矩阵设置矩阵?

来自分类Dev

使用存储在另一个矩阵中的索引访问数据矩阵

Related 相关文章

  1. 1

    如何最好地构造一个矩阵,其元素恰好是其索引或Matlab中的索引函数?

  2. 2

    根据另一个矩阵中的值将一个矩阵的元素求和成一个数组

  3. 3

    如何基于另一个矩阵的值在矩阵中设置索引值

  4. 4

    MATLAB:使用小矩阵的元素高效构造大矩阵

  5. 5

    如何使矩阵的元素可调用函数

  6. 6

    MATLAB:在一个索引上将两个矩阵按元素相乘?

  7. 7

    如何根据另一个矩阵中元素的顺序在Matlab中重新排列矩阵中的元素?

  8. 8

    矩阵元素根据Matlab中的索引变化

  9. 9

    将一个矩阵分配为另一个矩阵的元素

  10. 10

    如何用另一个矩阵的值(使用Rcpp)替换C ++中矩阵的元素?

  11. 11

    在Matlab中另一个单元格中搜索矩阵的元素

  12. 12

    在R中索引矩阵的元素

  13. 13

    用R-索引中的另一个矩阵对一个矩阵进行索引超出范围

  14. 14

    花式索引一个numpy矩阵:每行一个元素

  15. 15

    如何从该矩阵生成的列表中获取矩阵中元素的索引?

  16. 16

    如何将一个矩阵的元素替换为另一个

  17. 17

    根据另一个矩阵中的值将一个矩阵的元素求和到一个数组中

  18. 18

    R:从另一个矩阵的元素减去一个矩阵的元素

  19. 19

    如何编写一个伪代码来计算矩阵的元素?

  20. 20

    使用矩阵元素作为另一个矩阵的索引

  21. 21

    如何根据另一个矩阵中元素的顺序在Matlab中重新排列矩阵中的元素?

  22. 22

    将一个矩阵分配为另一个矩阵的元素

  23. 23

    从零矩阵构造一个简单的索引矩阵

  24. 24

    基于起始索引和终止索引的另一个矩阵的索引矩阵

  25. 25

    如何不使用for循环而参考列索引向量更改矩阵的元素?

  26. 26

    通过numpy中的索引数组从另一个矩阵填充空矩阵的行

  27. 27

    如何访问索引来自数学运算的 nD 矩阵的元素

  28. 28

    MATLAB:如何按索引矩阵设置矩阵?

  29. 29

    使用存储在另一个矩阵中的索引访问数据矩阵

热门标签

归档