Recompose stacked column cell vectors into adjacent row cell vectors
3 次查看(过去 30 天)
显示 更早的评论
I have a row array of cells, varargin, within a function. The contents of each cell corresponds to an argument supplied by the invoker. I know that each argument is a column vector, and the vectors are of the same height. In my particular scenario, they are the input variables of a table when "rowfun" is applied (with "Grouping", though I'm not sure that matters). The type/class of each argument can be anything, including cells, strings, cells containing char arrays, objects of type OptimizationVariable or OptimizationExpression, etc.
I would like to decompose the vertical arrays and recompose them into row cell arrays. For example, if varargin is:
{ [1;2] ["cat";"dog"]}
then I want
{ 1 "cat" ; 2 "dog" }
I know that I can loop through the height of the arguments, then loop through the arguments to buildup each row. I'm looking for vectorized way to do this. If I try [varargin{:}], I get unwanted type conversion, leading to a "3x2 string array":
"1" "cat"
"2" "dog"
Thanks for any suggestion on how to do this while preserving the data type/class. If this is not possible, thanks for letting me know.
0 个评论
采纳的回答
Voss
2022-4-6
Here's one way:
varargin = { [1;2] ["cat";"dog"] };
% convert each element of varargin to a (2x1) cell array:
temp = cellfun(@num2cell,varargin,'UniformOutput',false);
% concatenate the resulting (2x1) cell arrays into a (2x2) cell array:
temp = [temp{:}]
temp{1,1}
temp{1,2}
temp{2,1}
temp{2,2}
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!