フィルターのクリア

How to create vectors from a cell array?

25 ビュー (過去 30 日間)
Yerzhigit Bapin
Yerzhigit Bapin 2017 年 7 月 3 日
コメント済み: Yerzhigit Bapin 2017 年 7 月 3 日
I have a cell array consisting of 3 cells (1x10, 1x15, 1x20). How can I efficiently create 3 vectors?
  1 件のコメント
Stephen23
Stephen23 2017 年 7 月 3 日
編集済み: Stephen23 2017 年 7 月 3 日
@Yerzhigit Bapin: why can't you simply keep the data in the cell array and use indexing? Using indexing is much simpler and more efficient than creating/access variable names dynamically:

サインインしてコメントする。

回答 (2 件)

Adam
Adam 2017 年 7 月 3 日
編集済み: Adam 2017 年 7 月 3 日
[a,b,c] = myCell{:};
Not advisable if the number of vectors you want to create escalates to the state that you are next going to ask how you name then a1, a2, a3, etc, but for just extracting an explicit number of outputs the above should work.
  5 件のコメント
Stephen23
Stephen23 2017 年 7 月 3 日
編集済み: Stephen23 2017 年 7 月 3 日
cellfun(@cumsum,C,'uni',0)
where C is your input cell array.
Yerzhigit Bapin
Yerzhigit Bapin 2017 年 7 月 3 日
Thanks, it works!

サインインしてコメントする。


Image Analyst
Image Analyst 2017 年 7 月 3 日
Use deal():
% Setup: Make cell array consisting of 3 cells (1x10, 1x15, 1x20).
ca = {ones(1,10), rand(1,15), randi(9, 1, 20)}
celldisp(ca); % Display it.
% Make vectors
[v1, v2, v3] = deal(ca{:})
or simply assign the 3 vectors
v1 = ca{1};
v2 = ca{2};
v3 = ca{3};

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by