是否可以使用matlab访问数组,如C ++中的索引?

时间:2013-09-04 11:05:12

标签: c++

我正在考虑使用类似索引的matlab访问C ++数组,例如a[1 , :]。这将非常方便。

我重载了operator [],但似乎不可能有a[1, : ]语法。

我想出的解决方案是编写一个脚本,该脚本预处理C ++源代码并将a[1, :]转换为C ++函数,例如col(a, 1)。但这似乎很费力。

有没有人有更好的解决方案?谢谢!

2 个答案:

答案 0 :(得分:6)

  

我想出的解决方案是编写一个脚本,它预处理C ++源代码并将[1,:]转换为C ++函数,例如col(a,1)。但这似乎很费力。

它也很脆弱,容易出错,复杂化复杂,混合任何错误和模糊。你最好使用宏(你永远不应该使用这样的宏)。

  

有没有人有更好的解决方案?

您是否考虑过简单地添加一个能够满足您需求的功能?语法不会使用数组索引,但是对于任何查看代码(包括你自己两年后)和显式代码的人来说都会很熟悉(因为函数名称会说明函数的作用)。

答案 1 :(得分:3)

Boost multi array提供了1索引和列视图。 range()替换了matlab运算符:

您还可以从文档

中定义此示例中的数组视图
myarray[ boost::indices[range()][range() < 5 ][4 <= range().stride(2) <= 7] ]

这相当于matlab

myarray(:,1:4,4:2:7)