Check class of input variables
4 views (last 30 days)
Show older comments
I have a function that requires several input variables:
function output = myFun(A,B,C,D,E,...)
% code
end
I need to check the class of those inputs and convert all "cell" to "mat" format. Of course I can do something like this:
if iscell(A)
A = cell2mat(A)
end
if iscell(B)
B = cell2mat(B)
end
if iscell(C)
C = cell2mat(C)
end
...
But how do I do that in a for loop?
1 Comment
Stephen23
on 12 Sep 2018
Edited: Stephen23
on 12 Sep 2018
"But how do I do that in a for loop?"
Magically accessing variable names in a loop is one way that beginners force themselves into writing slow, complex, buggy code that is hard to debug. read this to know why:
The situation is easy to avoid with varargin and indexing.
Answers (1)
Stephen23
on 12 Sep 2018
Edited: Stephen23
on 12 Sep 2018
function out = myFun(varargin)
idx = cellfun(@iscell,varargin);
varargin(idx) = cellfun(@cell2mat,varargin(idx),'uni',0);
...
end
You can then access the elements of varargin trivially using indexing.
2 Comments
Stephen23
on 12 Sep 2018
Edited: Stephen23
on 12 Sep 2018
"After this, I suppose I should do something like this:"
A = varargin{1};
B = varargin{2};
C = varargin{3};
I don't suppose that, but you could if you want to. Personally I would not bother, because all of the data is trivially accessibly using indexing already.
"or is there an easier way?"
No. Read my comment to know why:
See Also
Categories
Find more on Get Started with MATLAB in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!