一个带Matlab索引功能的类似STL的Vector
一个类似于 STL 的向量,具有 Matlab 索引功能。
引言
向量是 MATLAB 中的基本数据结构。它提供了一种简单、快速、高效且可扩展的数据结构,为数据编程提供了代数视角,即使对于复杂的数据结构也是如此。Matlab 允许您开发快速的技术解决方案。但是,MATLAB 循环和用户界面太慢了 :o。您有责任将您的代码和数据结构重构为矩阵和向量。
例如,要对一个向量求和,您可以编写一个简单的计数循环。但是,使用一个全为 1 的向量进行内积运算会更快。
mtVector, mtRefVector
mtVector
提供了一个类似于 STL 的向量。实际上,它封装了 std::vector
。添加了数学和索引运算符。
typedef mtVector<int> intVector; intVector iv1(15, /* 15 elements */ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14); intVector iv2(15, /* 15 elements */ 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140); print(iv1);
打印
iv1= < 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 >
和,
print(iv1(4 to 12));
返回 mtRefVector
并打印
iv1(4 to 12)= < 4 5 6 7 8 9 10 11 12 >
类似地
iv1(4 to 12)=iv2(4 to 12); print(iv1);
将 iv2(4..12)
中的值赋给 iv1(4..12)
中的元素,并打印
iv1= < 0 1 2 3 40 50 60 70 80 90 100 110 120 13 14 >
此外,它扩展到根据其索引向量选择元素
intVector iv3(15, 0,1,2,1,2,0,2,0,1,1,0,4,4,0,4); print(iv1(iv3.FindOnes()));
返回 mtRefVector
并打印
iv1(iv3.FindOnes())= < 9 18 27 360 540 720 810 990 1080 126 >
我想 mtVector
和 mtRefVector
提供了一种简单直观的方式来访问和操作向量。 简单来说,我们可以根据任何其他排序向量的索引向量对 iv1
、iv2
和 iv3
进行排序。
iv1(iv5.ISort());
获取对 iv5
进行排序的索引,并以相同的顺序访问 iv1
。