How to store multiple outputs of a structure into a character array using logical indexing.

조회 수: 1 (최근 30일)
Hello all,
Im new to Matlab and using structure, char and string arrays. Was hoping for some help on the below.
If I have a structure with different names as below, and if I have a logical array to weed out names containing FLUID, my logical array looks like log=[1;0;1;1;0]
Using the command F(log).name in the command line Yields the below output.showing all 3 names. However, if Id like to store all 3 values into a strucuture, or character/string array. Using X=F(log).name, just assings the first value 'Fluid 1'.
How could I dynamically assign all 3 values to another structure or string array?
Command Line
ans =
'Fluid1'
ans =
'Fluid2'
ans =
'Fluid3'
F(1).name='Fluid1' F(2).name='Solid1' F(3).name='Fluid2' F(4).name='Fluid3' F(5).name='Solid2'

채택된 답변

Stephen23
Stephen23 2023년 6월 9일
편집: Stephen23 2023년 6월 9일
F(1).name='Fluid1';
F(2).name='Solid1';
F(3).name='Fluid2';
F(4).name='Fluid3';
F(5).name='Solid2';
L = logical([1;0;1;1;0]); % do NOT use LOG as a variable name
To a cell array, and then to a string array:
C = {F(L).name}
C = 1×3 cell array
{'Fluid1'} {'Fluid2'} {'Fluid3'}
S = string(C)
S = 1×3 string array
"Fluid1" "Fluid2" "Fluid3"
To another structure, with a different fieldname:
D = struct('X',cell(1,3));
[D.X] = F(L).name
D = 1×3 struct array with fields:
X
D.X % check the content
ans = 'Fluid1'
ans = 'Fluid2'
ans = 'Fluid3'

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by