From cell array to matrix

3 ビュー (過去 30 日間)
Lev Mihailov
Lev Mihailov 2019 年 7 月 25 日
コメント済み: Andrei Bobrov 2019 年 7 月 25 日
Hello! I have cell arrays, help me deal with the loop.
for i = 1:length(Animal)-1
Y=[X{i}];
end
data looks like this % X{1}=[0] X{2}=[0 1.2 1.4 1.6] X{3}=[0] X{4}=[0 1.3 1.5 1.6]....
My task is to create a 4x800 matrix, where if zero is the column [0 0 0 0], and the values ​​will be in the column

採用された回答

Andrei Bobrov
Andrei Bobrov 2019 年 7 月 25 日
Y = cell2mat(cellfun(@(x)[x(:);zeros(4-numel(x),1)],X,'un',0));
  3 件のコメント
Andrei Bobrov
Andrei Bobrov 2019 年 7 月 25 日
Hi Lev!
Please attach your data X as mat-file.
Andrei Bobrov
Andrei Bobrov 2019 年 7 月 25 日
Variant:
n = cellfun(@(x)numel(x(:)),X);
m = max(n);
k = numel(X);
Y = zeros(m,k);
for ii = 1:k
Y(1:n(ii),ii) = x{ii};
end

サインインしてコメントする。

その他の回答 (1 件)

Felix Albrecht
Felix Albrecht 2019 年 7 月 25 日
Try preallocating with zeros:
Y = zeros(4,800);
% Assuming that length(Animal)-1 = 800
for i = 1:length(Animal)-1
Y(:,i) = X{i};
end
  2 件のコメント
Andrei Bobrov
Andrei Bobrov 2019 年 7 月 25 日
+1
Lev Mihailov
Lev Mihailov 2019 年 7 月 25 日
編集済み: Lev Mihailov 2019 年 7 月 25 日
Y = zeros(4,800);
% Assuming that length(Animal)-1 = 800 length(Animal)=801
for i = 1:length(Animal)-1
Y(:,i) = X{i}; % X{i} 1x800
end
Index exceeds matrix dimensions.
Error in Max_int2407edt (line 9408)
what could be wrong?

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by