How to get the "zero/blank" element of a given variable?
2 次查看(过去 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?
0 个评论
采纳的回答
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
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
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Software Development Tools 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!