Introduction
Vector is the basic data structure in MATLAB. It provides easy, fast, effective, and scalable data structures giving programming an algebraic view for data, even for complex data structures. Matlab allows you do develop fast technical solutions. However, MATLAB loops, and UIs are too slow :o. It is your responsibility to reformulate your code and data structures into matrices and vectors.
For example, to sum up a vector, you can write a simple counting loop. However, it is faster to use inner product with a vector of ones.
mtVector, mtRefVector
mtVector
provides an STL-like vector. Actually, it wraps std::vector
. Mathematical and indexing operators are added.
typedef mtVector<int> intVector;
intVector iv1(15,
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14);
intVector iv2(15,
0,10,20,30,40,50,60,70,80,90,100,110,120,130,140);
print(iv1);
prints:
iv1= < 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 >
and,
print(iv1(4 to 12));
returns mtRefVector
and prints:
iv1(4 to 12)= < 4 5 6 7 8 9 10 11 12 >
Similarly:
iv1(4 to 12)=iv2(4 to 12);
print(iv1);
assigns values in iv2(4..12)
to elements in iv1(4..12)
, and prints:
iv1= < 0 1 2 3 40 50 60 70 80 90 100 110 120 13 14 >
Moreover, it extends to select elements given a vector of their indices:
intVector iv3(15, 0,1,2,1,2,0,2,0,1,1,0,4,4,0,4);
print(iv1(iv3.FindOnes()));
returns mtRefVector
and prints:
iv1(iv3.FindOnes())= < 9 18 27 360 540 720 810 990 1080 126 >
I guess mtVector
and mtRefVector
provide simple intuitive way to access and play with vectors. Simply, we can sort iv1
, iv2
and iv3
given index vector of any other sorted vector.
iv1(iv5.ISort());
gets indices that sorts iv5
, and access iv1
in the same order.