How to get the "zero/blank" element of a given variable?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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?
0 commentaires
Réponse acceptée
Rik
le 29 Août 2019
Modifié(e) : Rik
le 29 Août 2019
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 commentaires
Rik
le 29 Août 2019
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
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Software Development Tools dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!