MATLAB Function에서 struct의 배열 별 요소 개수 구하기

3 Ansichten (letzte 30 Tage)
eblee
eblee am 20 Sep. 2023
Kommentiert: Dyuman Joshi am 21 Sep. 2023
MATLAB Function에서 arr의 struct 배열 개수, 배열 별 요소의 개수를 구하고 출력하고 싶습니다.
배열 별 요소 개수를 구하기 위해 cell_num을 구현했는데 적절한가요? 또한, 출력하려면 어떻게 해야 하나요?
cell_num = struct();
arr = struct("sig1",{{1,2,3,4}},"sig2",{{4,5,6}},"sig3",{{7,8}});
sig_num = 3;
for i = 1:sig_num
cell_num = structfun(@size,arr,"UniformOutput",false);
y = cell_num(i);
end

Akzeptierte Antwort

Dyuman Joshi
Dyuman Joshi am 20 Sep. 2023
%Defining structure
cell_num = struct();
arr = struct("sig1",{{1,2,3,4}},"sig2",{{4,5,6}},"sig3",{{7,8}})
arr = struct with fields:
sig1: {[1] [2] [3] [4]} sig2: {[4] [5] [6]} sig3: {[7] [8]}
%Field names of the structure arr
names = fieldnames(arr)
names = 3×1 cell array
{'sig1'} {'sig2'} {'sig3'}
%Number of fields in arr
n = numel(names)
n = 3
%Number of elements in each field
y = structfun(@numel,arr)
y = 3×1
4 3 2
To display or printf -
%Method 1
disp(y)
4 3 2
%Method 2
fprintf('%d\n',y)
4 3 2
  2 Kommentare
eblee
eblee am 21 Sep. 2023
a = structfun(@numel,arr,UniformOutput=false);
fprintf('%d\n',a);
Running on the MATLAB Function results in an 'An input argument with type 'struct' is inconsistent with the conversion character 'd' in the 'formatSpec'.' error.
Is there any way to output a structure from the MATLAB function?
Dyuman Joshi
Dyuman Joshi am 21 Sep. 2023
There is no need to use UniformOutput=false for the structfun command.
You can see that I have not used that in my code above.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 구조체 finden Sie in Help Center und File Exchange

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!