【发布时间】:2012-05-01 04:00:28
【问题描述】:
假设我有一个列矩阵pols,其中包含 [theta, rho, z] 的向量。
这意味着,如果我有 9 个这样的向量,它将是一个 9x3 矩阵。
像这样安排它们非常方便,因为我可以将它们中的任何一个提供给像pol2cart这样的函数:
cart3 = pol2cart(pols(3,:));
对于某个向量,我可以通过索引 1、2、3 找到它的分量:
rho5 = pols(5,2);
但有时矩阵实际上在另一个更宽的矩阵内,并且可能在中间而不是开头,这样上面可能会变成:
rho5 = pols(5,6);
为了使代码在其他人必须维护时更具可读性,是否可以通过唯一名称引用索引?喜欢
rho5 = pols(5).rho;
可以在前面定义 .rho 映射到具有 rho 值的列。
我曾冒险使用mat2cell 和cell2struct 将矩阵转换为单元格,然后再转换为数组,但这似乎并不实用。或者,我可以创建一个结构数组,但是我失去了执行pol2cart(pols) 的能力,而是必须执行
pol2cart(pols.theta, pols.rho, pols.z);
所以重复这个问题:我可以将索引映射到唯一名称吗?
【问题讨论】:
-
您的第一行代码不起作用。 POL2CART 需要 2(或 3)个输入参数,而不是单个向量参数。您使用的是哪个版本的 MATLAB?
-
其实我只在Octave上测试过,因为我没有Matlab,但我必须帮助我正在使用它的朋友。所以如果 pol2cart 不接受这样的论点,那么第一个论点不成立。尽管如此,能够通过名称寻址到索引还是很方便的。
标签: matlab matrix data-structures matlab-struct