Add first element to a cell array
102 ビュー (過去 30 日間)
古いコメントを表示
Dear,
I would like to add a new element in the first position in an cell array For example if ArrCell={[1],[2],[3],[4],[5]} is the existing cell and [new] is a matrix. I would like to get ArrCell={[new],[1],[2],[3],[4],[5]}
Of course, I can get this result using a temporal cell array and looping over all the elements of the existing one, but the quesion is if there an efficient way to get this result
Thanks in advance,
0 件のコメント
採用された回答
Adam
2015 年 12 月 18 日
ArrCell = [ { new }, ArrCell ];
should work. I'm not at my machine with Matlab at the moment so can't double-check, but fairly sure that works.
5 件のコメント
Adam
2020 年 3 月 20 日
ArrCell was a row array. You can't concatenate vertically a scalar and a 5-element row array.
Image Analyst
2020 年 3 月 20 日
new = magic(3) % A matrix
ArrCell={[1],[2],[3],[4],[5]} % A cell array
ArrCell = [ { new }, ArrCell ] % Adam uses comma
ArrCell2 = [ { new }; ArrCell ]; % Daniel uses semicolon
new =
8 1 6
3 5 7
4 9 2
ArrCell =
1×5 cell array
{[1]} {[2]} {[3]} {[4]} {[5]}
ArrCell =
1×6 cell array
{3×3 double} {[1]} {[2]} {[3]} {[4]} {[5]}
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
Error in test1 (line 12)
ArrCell2 = [ { new }; ArrCell ];
その他の回答 (3 件)
Image Analyst
2015 年 12 月 18 日
But the big question is why are you even using a cell array for that instead of a simple numerical array. Cell arrays are complicated and use a huge amount of overhead. From what you've shown there is no reason to use one. I recommend this instead
Arr = [1,2,3,4,5];
Arr = [new, 1,2,3,4,5]
2 件のコメント
Josh
2024 年 5 月 4 日
appreciate this nudge in a more efficient direction, i fallback on cells arrays out of habit and ease but switching over to numerical arrays where possible...i make animations and cells help when image sizes are changing at least but seem uneccessary when image size is fixed
Fletcher Garrison
2021 年 2 月 3 日
編集済み: Fletcher Garrison
2021 年 2 月 3 日
You can also use:
Arrcell = {1,2,3,4,5};
new = magic(5);
Arrcell = horzcat(new,Arrcell);
0 件のコメント
Jonathan
2024 年 9 月 18 日
For future people looking this up:
testCell = {"one", 2, 10, "llama"}
testCell = {"newInput", testCell{:}}
1 件のコメント
Jonathan
2024 年 9 月 18 日
I stand corrected by MATLAB autofix. Apparently this is faster.
testCell ={"one", 2, 10, "llama"}
testCell = [{"newInput"}, testCell(:).']
参考
カテゴリ
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!