From cell array to matrix

3 Ansichten (letzte 30 Tage)
Lev Mihailov
Lev Mihailov am 25 Jul. 2019
Kommentiert: Andrei Bobrov am 25 Jul. 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

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Felix Albrecht
Felix Albrecht am 25 Jul. 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 Kommentare
Andrei Bobrov
Andrei Bobrov am 25 Jul. 2019
+1
Lev Mihailov
Lev Mihailov am 25 Jul. 2019
Bearbeitet: Lev Mihailov am 25 Jul. 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?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by