From cell array to matrix

1 vue (au cours des 30 derniers jours)
Lev Mihailov
Lev Mihailov le 25 Juil 2019
Commenté : Andrei Bobrov le 25 Juil 2019
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

Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 25 Juil 2019
Y = cell2mat(cellfun(@(x)[x(:);zeros(4-numel(x),1)],X,'un',0));
  3 commentaires
Andrei Bobrov
Andrei Bobrov le 25 Juil 2019
Hi Lev!
Please attach your data X as mat-file.
Andrei Bobrov
Andrei Bobrov le 25 Juil 2019
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

Connectez-vous pour commenter.

Plus de réponses (1)

Felix Albrecht
Felix Albrecht le 25 Juil 2019
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 commentaires
Andrei Bobrov
Andrei Bobrov le 25 Juil 2019
+1
Lev Mihailov
Lev Mihailov le 25 Juil 2019
Modifié(e) : Lev Mihailov le 25 Juil 2019
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?

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by