MATLAB:使用列表访问多维数组的元素
我有一个 d 维数组 A 和长度等于 d 的向量 inds 。我想访问 inds 处 A 的值。
理想情况下,我会做类似 A(*inds) 的事情(借用 Python 的解包语法)。我不知道如何在 MATLAB 中执行此操作。
如果我这样做 A(inds) 我实际上会从 A 中得到 d 个单独的值,这不是我想要的。我想要的是 inds 的元素 i 成为函数调用 A() 中的第 i 个参数。
I have a d-dimensional array, A, and vector inds with length equal to d. I would like to access the value of A at inds.
Ideally, I'd do something like A(*inds) (borrowing the unpacking syntax from Python). I'm not sure how to do this in MATLAB.
If I do A(inds) I actually get d separate values from A, which is not what I want. What I want is for element i of inds to be the ith parameter in the function call A().
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一种解决方案是创建一个 逗号分隔列表从你的下标索引
inds
向量中。您可以通过使用 NUM2CELL 将其转换为元胞数组来实现此目的,然后在索引A
时使用{:}
语法:One solution is to create a comma-separated list out of your vector of subscripted indices
inds
. You can do this by converting it to a cell array using NUM2CELL, then using the{:}
syntax when indexingA
:我认为这个工具可能会帮助你:
如果你有一个像 R = rand(5,10,15,20) 这样的 ND 矩阵,并且你想以特定模式访问元素,你可以使用 spindex 来访问相同的输出形状作为输入访问。因此,如果您有 size(i1) = [5,5,5]、size(i2) = [5,5,5] 等,则 size(spindex(R,i1,i2,i3,i4)) 也等于[5,5,5]。
您需要将下面的代码作为 spindex.m 添加到 MATLAB 路径中的某个位置。
I think this tool might help you:
if you have an ND matrix like R = rand(5,10,15,20), and you want to access elements in a particular pattern, you can use spindex to access the output in the same shape as the input access. So if you have size(i1) = [5,5,5], size(i2) = [5,5,5], etc. Then size(spindex(R,i1,i2,i3,i4)) also equals [5,5,5].
you will need to add the code below as spindex.m to a location in your MATLAB path.