【发布时间】:2015-06-26 13:18:29
【问题描述】:
我有一个矩阵a,维数未知。
我想像a(:,:,:,:,:, ... ,:,1) 一样访问它。也就是说,只设置最后一个维度。
如何做到这一点无需进行大量数学运算并将 a 视为一维数组。我知道这个解决方案有效,但是当每个维度都有不同的大小(而且你甚至不知道维度的数量)时,它是一团糟并且很难实现
【问题讨论】:
-
当你说“访问它”时,你是想提取数组的那一部分,比如
b = a(:,:, ..., 1),还是想设置成a(:,:, ..., 1) = b,或者别的什么?跨度> -
阅读和设置有区别吗?在这种情况下,我希望两者都能做到。
-
是的。基本上,要分配,您需要一个“左值”,这意味着a)您使用的任何技术都必须直接索引到原始数组(或通过重塑和重新分配进行补偿),以及b)如果您将其包装在一个函数中,则赋值必须发生在函数内部,而不是仅仅返回索引。我已经用
slice函数的一个变体更新了我对另一个问题的回答。
标签: matlab