直观的数值表示‘:’和‘结束’

1视图(30天)
詹姆斯Tursa
詹姆斯Tursa 2018年1月19日
评论道: 詹姆斯Tursa 2018年1月30日
我工作在一个墨西哥人将接受常规索引向量。我想这个向量能够使用相当于‘:’和‘结束’数值。我正在考虑我有两个选择:
选项(1)0 =‘:’,正=“结束”
例子:假设x是一个2 x3x4数组,那么相当于x(:, 2)将参数(x,[0 2正])
选择(2)0 =“结束”,正=‘:’
例子:假设x是一个2 x3x4数组,那么相当于x(:, 2)将参数(x,[正2 0])
我倾向于选择1的方法用于我的墨西哥人,因为正似乎直观的“结束”,这让0意味着‘:’。
有人有其他的想法,哪个方法更直观,或者为什么一个方法可能会或多或少比其他直观?或者已经有其他功能做类似的事情,一个约定,这已经被建立?或者NaN值会更直观一些原因?等。
5个评论

登录置评。

答案(1)

史蒂文的主
史蒂文的主 2018年1月20日
我最初发布评论而不是一个答案,因为我没有起初以为我的消息是一个答案。它开始作为一个要求澄清。但我想我的建议 substruct 被视为一个潜在的答案。
你的方法可能会导致一个模棱两可的输入。
x =兰德(2、3、4);
y = x (:, [1 - 2], [3 2]);
你的墨西哥人会如何函数解析(0 1 2 3 2)?或以上:
z = x (:, (1 2 3), 2);
您可能想要接受一个索引 结构体 (可以使用创建数组 substruct 函数),而不是一个向量。 这个文档页面 列出了一些情况下,您可能需要或要考虑。
1评论
詹姆斯Tursa
詹姆斯Tursa 2018年1月20日
编辑:詹姆斯Tursa 2018年1月20日
谢谢你的输入。扩大上面的原始问题,墨西哥人函数我写只会接受连续的下游处理索引,我希望有一种简单直观的方法索引的用户输入。我最初的想法是让用户输入开始和结束索引作为两个独立的向量,补充道“:”和“结束”功能在我最初的问题。
因此,对于你的上面的例子:
x(:,[1 - 2],[3 2])是一个不连续的子数组x和将不允许,所以并不适用。
x(:,(1 2 3), 2)是一个连续的子数组x将被允许。
界面我想会指定起始和结束索引向量作为墨西哥人例程的参数。如果我们假设正意味着‘:’和0意味着每格雷格“结束”的言论,然后索引参数将为这个示例如下:
mexroutine (x,[1正2],[3正2])
或者,它可能是指定如下:
mexroutine (x,正正2])
我想我会和格雷格的优秀建议0意味着“结束”和负输入模的方式,让正意味着‘:’。
我不得不做一些更多的思考是否这两个向量的方法开始和结束索引(这是容易使用在一个墨西哥人常规)就足够了,或者我是否需要考虑别的东西(比如,一个MATLAB索引结构)可能为用户更直观。

登录置评。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!