How to extract a column from cell arrays matrix?
167 ビュー (過去 30 日間)
古いコメントを表示
Abdulaziz Abutunis
2017 年 4 月 29 日
コメント済み: Abdulaziz Abutunis
2018 年 8 月 16 日
Dear MATLAB users,
I wish I got your help for this problem. I have built a cell arrays as a matrix as follow
for k=1:5
out{k}(1,:}=
out{k}(2,:}=
out{k}(3,:}=
end
I am trying to extract the the first element in first array from each cell. i have tried this out{1:5}(1,1) but it does not work however if i type out{1}(1,1) this give the first element but in specific cell also out{1:5} shows all cell matrices. The error I saw when i tried out{1:5}(1,1) was Expected one output from a curly brace or dot indexing expression, but there were 5 results.
Thank you in advance. Best Aziz
3 件のコメント
Walter Roberson
2017 年 4 月 29 日
Abdulaziz Abutunis comments to Stephen:
He did not solve the problem but he did give a good advice to avoid this problem in the future. he even gave more than one option.
採用された回答
per isakson
2017 年 4 月 29 日
One way
>> cellfun( @(a) a(1,1), out )
ans =
0.9572 0.0357 0.7060 0.0344 0.7094
however, a for-loop might be a better choice
6 件のコメント
per isakson
2017 年 4 月 29 日
@Abdulaziz Abutunis, Create some sample data
for ii = 1:5
for jj = 1:3
out{ii}(jj,:) = ii*100 + jj*10 + (1:3)';
end
end
Inspect the value of the first cell
>> out{1}
ans =
111 112 113
121 122 123
131 132 133
Inspect one specific element of the value of the first cell
>> out{1}(3,2)
ans =
132
>>
Caveat: I'm not sure I understood your question.
その他の回答 (2 件)
Image Analyst
2017 年 4 月 29 日
編集済み: Image Analyst
2017 年 4 月 29 日
You can't have out{k}(1,:} because you got two closing braces and no closing parenthesis. Maybe you meant out{k}(1,:). See the FAQ: http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F and try to avoid cell arrays in most cases, definitelyif you have rectangular numerical array of constant dimensions, it just complicates things.
Juvinch Vicente
2018 年 8 月 15 日
編集済み: Juvinch Vicente
2018 年 8 月 15 日
I'm not sure if this would work for the older version, but for version above 2016b, this line works.
cellMatrix = {'A', 'B', 'C'; 'A', 'B', 'C';'A', 'B', 'C'};
if you want the first column,
firstCol = cellMatrix(:,1);
and so forth.
参考
カテゴリ
Help Center および File Exchange で Cell Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!