Illustration of Vectors of structures:
In this illustration, the packages are vector which has three elements. It is shown as a column vector. Each and every element is a structure consisting of four fields, item_no, price, cost, and code. It may look like a matrix with rows and columns, but it is rather a vector of structures.
This can be generated in several ways. The one method is to generate a structure variable, as shown, to store the information on one software package. This can then be extended to be the vector of structures.
>> packages = struct('item_no',123,'cost',19.99,. . .
'price',39.95,'code','g');
>> packages(2) = struct('item_no',456,'cost', 5.99,. . .
'price',49.99,'code','l');
>> packages(3) = struct('item_no',587,'cost',11.11,. . .
'price',33.33,'code','w');
The first assignment statement shown generates the first structure in the structure vector; the next one generates the second structure, and so on. This really generates a 1 × 3 row vector.
Alternatively, the first structure could be considered as a vector to start with, taking illustration,
>> packages(1) = struct('item_no',123,'cost',19.99,. . .
'price',39.95,'code','g');
>> packages(2) = struct('item_no',456,'cost', 5.99,. . .
'price',49.99,'code','l');
>> packages(3) = struct('item_no',587,'cost',11.11,. . .
'price',33.33,'code','w');
Both of these techniques, though, include extending the vector. As we know that, preallocating any vector in MATLAB is more efficient than extending it. There are various techniques of preallocating the vector. By beginning with last element, the MATLAB would generate a vector with many elements. Then, the elements from 1 throughout end-1 could be initialized. For illustration, for a vector of structures which has three elements, begin with the third element.
>> packages(3) = struct('item_no',587,'cost',11.11,. . .
'price',33.33,'code','w');
>> packages(1) = struct('item_no',123,'cost',19.99,. . .
'price',39.95,'code','g');
>> packages(2) = struct('item_no',456,'cost', 5.99,. . .
'price',49.99,'code','l');