How to get the "zero/blank" element of a given variable?

조회 수: 1 (최근 30일)
royk
royk 2019년 8월 29일
댓글: royk 2019년 8월 30일
I have an array VAR of unknown type. When the array is extended, Matlab knowns how to fill in blank ("zero") values of the correct type. How do I get this default blank value for any given Var type?
One solution is simply to extend an array and see what value gets padded:
BLANK(2) = VAR(1) ; BLANK(2) = [] ;
This returns a scalar BLANK with the correct "0" value and works for any VAR type.
BUT: It doesn't work with empty VAR.
Any thoughts of a general way to get the Blank value for any given array even if empty?

채택된 답변

Rik
Rik 2019년 8월 29일
편집: Rik 2019년 8월 29일
You can abuse repmat for this:
a=uint8(8);
repmat(a,0,0)
b='foo_bar';
repmat(b,0,0)
Edit:
On second read, you might actually mean this instead:
a=uint8(8);b='foo_bar';c={'1',2};
get_blank_val=@(x) eval([class(x) '(0)']);
get_blank_val(a)
get_blank_val(b)
get_blank_val(c)
  댓글 수: 7
Rik
Rik 2019년 8월 29일
You could put in a special condition for a struct, but then you can't make it an anonymous function anymore.
function blank=get_blank_val(x)
if ~isa(x,'struct')
blank=eval([class(x) '(0)']);
else
fn=fieldnames(x);
tmp=[fn repmat({[]},size(fn))]';
blank=struct(tmp{:});
end
end
royk
royk 2019년 8월 30일
that will do the job
there are still other exceptions. for example, for an array of MyClass objects, Matlab determines Blank for array extension by calling empty(MyClass).
It thereby feels like there got to be a generic Matlab function that returns the Blank object for array extension for ANY type.
Anyway, your kind suggestion above surely does the job for my needs.
thanks!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Software Development Tools에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by