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

1 回表示 (過去 30 日間)
Morgan Clendennin
Morgan Clendennin 2016 年 12 月 6 日
編集済み: Stephen23 2016 年 12 月 6 日
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]

採用された回答

KSSV
KSSV 2016 年 12 月 6 日
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.

その他の回答 (1 件)

Stephen23
Stephen23 2016 年 12 月 6 日
編集済み: Stephen23 2016 年 12 月 6 日
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

カテゴリ

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