How to define a struct array with length more than one and assign values to one of the strucy array?

2 Ansichten (letzte 30 Tage)
Dear All,
I have a real array A. I want to define a struct array S to save the colculation reslut of element in A to the corresponding struct.
For example, A = [1 0.2 3 0.4 5 6]. I want to define strucy array S (with length 6) to save the calaulation result of elements in A.
S(1) = struct('A.1', A(1), 'Result', A(1)^2);
S(3) = struct('A.3', A(3), 'Result', A(3)^2);
S(4) = struct('A.4', A(4), 'Result', A(4)^2);
S(6) = struct('A.6', A(6), 'Result', A(6)^2);
I only want to save these 4 values.
My question is:
1). How to define S?
2). How to assign values to S?
Thanks a lot.
Benson

Akzeptierte Antwort

Stephen23
Stephen23 am 12 Okt. 2020
Bearbeitet: Stephen23 am 12 Okt. 2020
>> A = [1,0.2,3,0.4,5,6];
>> X = [1,3,4,6]; % "I only want to save these four values"
>> Ac = num2cell(A);
>> Bc = num2cell(A.^2);
>> S = repmat(struct(),1,6);
>> [S(X).A] = Ac{X};
>> [S(X).B] = Bc{X};
>> S.A
ans = 1
ans = []
ans = 3
ans = 0.40000
ans = []
ans = 6
>> S.B
ans = 1
ans = []
ans = 9
ans = 0.16000
ans = []
ans = 36
  4 Kommentare
Steven Lord
Steven Lord am 12 Okt. 2020
Are you required to store your data in a struct array, or would a cell array be acceptable?
c = cell(1, 10);
for k = 1:10
c{k} = magic(k);
end
celldisp(c)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Steven Lord
Steven Lord am 12 Okt. 2020
Bearbeitet: Steven Lord am 12 Okt. 2020
A.1 is not a valid struct field name.
With something this simple, I probably wouldn't use a struct array.
A = [1 0.2 3 0.4 5 6]
Asquared = A.^2
If you wanted to store these in one array rather than two, since the result of the operation is the same type and size as the data on which you're operating, you can store them as rows of the array:
B = [A; Asquared]
or as a table array:
C = table(A.', Asquared.', 'VariableNames', ["A", "A^2"]) % If you're using R2019b or later
C = table(A.', Asquared.', 'VariableNames', ["A", "A_squared"]) % R2019a or earlier
See the Release Notes for more information about the change in release R2019b.

Kategorien

Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by