Any function to get a short description of a variable just like the Value column in workspace?.

조회 수: 1 (최근 30일)
I have a struct with >4000 members/fields. I am writing a search function to find some matching members and displaying them along with a short description. Ideally i want the description to be like the value column of workspace(see below).
  댓글 수: 2
Von Duesenberg
Von Duesenberg 2018년 4월 25일
편집: Von Duesenberg 2018년 4월 25일
If your structure is called s for example, you can access the size of fields like this (so I suppose you can access other properties as well):
structfun(@size, s, 'Uni', 0)
Praveen Iyyappan Valsala
Praveen Iyyappan Valsala 2018년 4월 25일
Thanks for the suggestion, but I don't need just the size:(. I need value if it is a short array/single element or its size if it is a long one. Also the input can be another struct, class object or other datatype.

댓글을 달려면 로그인하십시오.

답변 (1개)

Jan
Jan 2018년 4월 25일
편집: Jan 2018년 4월 25일
What about writing a function, which satisfies your needs exactly?
function C = DispStructRoughly(S)
Field = fieldnames(S);
Data = struct2cell(S);
C = cell(1, numel(Field));
for iC = 1:numel(Field)
D = Data{iC};
classD = class(D);
if ndims(D) > 3
if isnumeric(D) && ~isreal(D)
comp = 'complex ';
else
comp = '';
end
if isempty(D)
empty = 'Empty ';
else
empty = '';
end
C{iC} = sprintf('%s%d dim %s%s array', empty, ndims(D), comp, classD);
elseif isnumeric(D)
...
elseif ischar(D)
C{iC} = D;
elseif ...
end
end
It is not hard to create the wanted strings exactly as you need them with all exceptions as you like. Simply try to expand this code and ask a specific question in case of problems.
  댓글 수: 2
Ameer Hamza
Ameer Hamza 2018년 4월 25일
Just wondering, if there is a way to directly access these strings. MATLAB must have stored them in variable metadata, for display purposes.
Praveen Iyyappan Valsala
Praveen Iyyappan Valsala 2018년 4월 25일
No wonder you are MVP;). I also thought of writing a function but then there are too many conditions and I got lazy:P . I tried some convoluted ways like this using details() / disp() and followed some string operation:
raw_text =evalc('details(MyStruct.parameter);');
This works for most except numeric arrays. where it prints all the elements.

댓글을 달려면 로그인하십시오.

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by