How I can combine this cell values in a single matrix?
1 回表示 (過去 30 日間)
古いコメントを表示
![I want to get my output in (12X28) matrix](https://www.mathworks.com/matlabcentral/answers/uploaded_files/713157/I%20want%20to%20get%20my%20output%20%20in%20(12X28)%20matrix.jpeg)
How I can get in a single (12X28) matrix
2 件のコメント
Simon Chan
2021 年 8 月 16 日
If the size of the first cell is [5x7 double], you may combine them to become a (12x7) matrix because all of them have 7 columns only.
Or you would like to repeat the cells until the final one has 28 columns?
回答 (2 件)
Wan Ji
2021 年 8 月 16 日
If X{1} is 1x7 array, the simplest way is
matrixOut = cell2mat(X')
6 件のコメント
Wan Ji
2021 年 8 月 17 日
If your rowNum is a variable, is it calculated in this way?
RowNum = prod(arrayfun(@(i)size(X{i},1), 1:1:numel(X)))
Then
RowNum =
12
The whole code my be
RowNum = prod(arrayfun(@(i)size(X{i},1), 1:1:numel(X)));
X = arrayfun(@(i)repmat(X{i},RowNum/size(X{i},1),1), 1:1:numel(X), 'uniform', 0);
A = cell2mat(X) % A is what you want
Simon Chan
2021 年 8 月 17 日
編集済み: Simon Chan
2021 年 8 月 17 日
Something like this and final matrix is C
clear; clc;
X = cell(1,4);
X{1} = round(10*rand(1,7));
X{2} = round(10*rand(3,7));
X{3} = round(10*rand(2,7));
X{4} = round(10*rand(2,7));
B{1} = repmat(X{1},12,1);
B{2} = repmat(kron(X{2},ones(2,1)),2,1);
B{3} = repmat(X{3},6,1);
B{4} = kron(X{4},ones(6,1));
C = cell2mat(B);
2 件のコメント
Simon Chan
2021 年 8 月 17 日
Need to know the pattern how to repeat the matrix. If a pattern can be found, it is able to implement it in a loop.
However, I am also confused since the repeating method of a 2 rows matrix may be different (The left and right matrix in your elaboration).
参考
カテゴリ
Help Center および File Exchange で Multidimensional Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!