How do I move certain rows up or down in a cell array?

8 ビュー (過去 30 日間)
Ziggy Zigg
Ziggy Zigg 2012 年 10 月 23 日
I have a cell array, which is sorted alphabetically. I need to move any row that contains a marker (for example, X), to the top of the list. How do I do that?
e.g.:
AAA AAB FFF FTD JJJ XXX XXY ZAF ZAE
So, I just need to move XXX and XXY to the beginning, and the rest of the array should remain the same.
Does anyone know of a script to do this automatically?
Thanks

採用された回答

Matt J
Matt J 2012 年 10 月 23 日
編集済み: Matt J 2012 年 10 月 23 日
idx=~cellfun('isempty', strfind(yourcell,'X'));
yourcell=yourcell(:).';
yourcell=[yourcell(idx), yourcell(~idx)];
  3 件のコメント
Matt J
Matt J 2012 年 10 月 23 日
Yes. If your cell array is really vertical and you want to keep it that way, just delete the 2nd line and concatenate vertically in the final line.
Ziggy Zigg
Ziggy Zigg 2012 年 10 月 23 日
Thanks Matt. I had another problem while using this. I had used a cell sorting function, for which I had to convert the cell array to char. So in Workspace, the cell contents show up with three apostrophes. This causes the strfind to not work (error: If any of the input arguments are cell arrays, the first must be a cell array of strings and the second must be a character array). If I do a 'iscellstr' to my array, it returns 1, meaning it is a cell array of strings. Do you know what those three apostrophes mean? I'm not familiar with that. Also, if I delete another column in that cell array, the apostrohes disappear, and now I can use the code you pasted, no problem. I'm stumped.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by