Create an array of structures

Hello!
I'm trying to create a 4x5 matrix containing a 1x3 structure in each of its cells but I can't get the result shown in the picture. I only managed to get a 9x1 structure.
position = {'corner';'edge';'corner';'edge';'inside';'edge';'corner';'edge';'corner'};
temperature = {25;25;25;25;50;25;25;25;25};
ic = {0;0;0;0;0;0;0;0;0};
PCB = [position, temperature ,ic]
cell2struct(PCB,{'position';'temperature';'ic'},1)
Does anyone know how to create it? Thank you very much!

4 Commenti

Stephen23
Stephen23 il 11 Ott 2020
Modificato: Stephen23 il 11 Ott 2020
Most likely you are confusing the number of fields with the size of a structure element. The size and the number of fields are totally independent things. Every element of a structure is scalar, no matter how many fields it has. So your example would be a 4x5 structure (with 3 fields), and does NOT contain 1x3 structs, as your image shows.
You provide 9 data points but you want a structure with 20 elements: where are the missing data supposed to come from? What values are supposed to be placed in the other 11 structure elements?
Hello Stephen! Thank you very much for your answer! You are right, what I was trying to do is a 4x5 structure with 3 fields and their corresponding names (position, temperature and ic). The data would come from the result of an iterative algorithm, but in this case, to check the structure all the elements contain the same value as the element (1,1).
What would be the correct way to carry out the structure of 4x5? Thank you.
Stephen23
Stephen23 il 11 Ott 2020
"What would be the correct way to carry out the structure of 4x5?"
That depends on the format of the input data:
  • Are they generated one-at-a-time in a loop (or similar), or are they available in arrays?
  • Can the data arrays (if in arrays) change size? What size do the arrays use?
Possibly struct or one of the conversion functions would suit your task.
The data are available in fixed-size arrays as follows:
- position: (4x5)
- temperature: (4x5)
- ic: (4x5)

Accedi per commentare.

 Risposta accettata

Steven Lord
Steven Lord il 11 Ott 2020
If the field values you pass into the struct function are a cell array, MATLAB will make a struct array the same size as the cell array. Each element of the struct will contain the data from the corresponding cell of the cell array.
A = {1 2 3; 4 5 6};
B = {'apple', 'banana', 'banana'; 'cherry', 'cherry', 'apple'};
S = struct('number', A, 'fruit', B);
T = S(2, 2) % T.number is 5, T.fruit is 'cherry'
See the second and third items in the Description section of the documentation page for the struct function for more information.

Più risposte (0)

Categorie

Scopri di più su Programming in Centro assistenza e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by