65.9K
CodeProject 正在变化。 阅读更多。
Home

一个带Matlab索引功能的类似STL的Vector

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.88/5 (7投票s)

2003年4月4日

GPL3
viewsIcon

68760

downloadIcon

366

一个类似于 STL 的向量,具有 Matlab 索引功能。

Sample Image - mtVector.jpg

引言

向量是 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 >

我想 mtVectormtRefVector 提供了一种简单直观的方式来访问和操作向量。 简单来说,我们可以根据任何其他排序向量的索引向量对 iv1iv2iv3 进行排序。

iv1(iv5.ISort());

获取对 iv5 进行排序的索引,并以相同的顺序访问 iv1

© . All rights reserved.