Concatenate and extract elements of cell array to a non-cell array

3 vues (au cours des 30 derniers jours)
Morgan Clendennin
Morgan Clendennin le 6 Déc 2016
Modifié(e) : Stephen23 le 6 Déc 2016
Hi,
So I am trying to take a cell array and extract the elements of it, concatenate them, and place them in the corresponding locations in a non-cell array. I'm sure that doesn't make much sense so let's say I have the follow cell array
A = {[1 3],[],[2 3 7 8];[2 4 5 7],[4 7 8],[];[],[],[]}
Now I want to take this cell array take the first element [1 3], extract the elements and concatenate them and place them as the first element of a non-cell array. This will continue for the rest of the elements of the cell array. If a cell has no elements, the corresponding location in the new array would equal zero. The final non-cell array would look like following
B = [13,0,2378;2457,478;0,0,0]

Réponse acceptée

KSSV
KSSV le 6 Déc 2016
A = {[1 3],[],[2 3 7 8];[2 4 5 7],[4 7 8],[];[],[],[]} ;
A = A(:) ;
B = zeros(size(A)) ;
for i = 1:numel(A)
if ~isempty(A{i})
B(i) = str2num(strrep(num2str(A{i}), ' ', '')) ;
end
end
B = reshape(B,3,3)
Can be achieved without loop also...but understanding is more important then code.

Plus de réponses (1)

Stephen23
Stephen23 le 6 Déc 2016
Modifié(e) : Stephen23 le 6 Déc 2016
A simple solution:
>> A = {[1 3],[],[2,3,7,8];[2,4,5,7],[4,7,8],[];[],[],[]};
>> B = [13,0,2378;2457,478,0;0,0,0]
B =
13 0 2378
2457 478 0
0 0 0
>> C = cellfun(@(c)sum([0,c].*10.^(numel(c):-1:0)),A)
C =
13 0 2378
2457 478 0
0 0 0

Catégories

En savoir plus sur Operators and Elementary Operations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by