Finding cells with specific string in cell array and substituting them

23 ビュー (過去 30 日間)
Saeid
Saeid 2017 年 12 月 19 日
コメント済み: Saeid 2017 年 12 月 20 日
In a cell array named CC I search for a specific string, ' -' and I want to substitute the contents of all those cells with something else, e.g. '0'. When I perform the search using
[ii jj]=find(strncmpi(CC,' -',2))
I get the resulots in the form:
ii= 1
2
3
4
8
and
jj= 12
12
12
15
15
Now: how can I change the elements containg that string and having indexes ii & jj with '0'? I tried different form but cannot find a way to refer to elements of CC having ii & jj as row and column number.

採用された回答

Jos (10584)
Jos (10584) 2017 年 12 月 19 日
You can simply use strrep to replace strings in a cell array:
CC = {'A',' -','B',' -','C'}
CCout = strrep(CC,' -', '0')
  2 件のコメント
Saeid
Saeid 2017 年 12 月 19 日
Thanks Jos,
what you suggested seems like a very fast solution, but MATLAB gave me the error message:
Cell elements must be character vectors.
when I tried it.
My data is based on excel input of the cell type but somewhere in the original excel file there are some blank columns that have been replaced with a ' -' string in the original format (see picture below) and whnever I want to turn the entire dataset to a numerical array using cell2mat then I see the error message that data types should be the same.
Jos (10584)
Jos (10584) 2017 年 12 月 19 日
Ah, your cell is a mixture of strings and numbers ...
CC(strcmpi(CC,' -')) = {0}

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

その他の回答 (1 件)

Stephen23
Stephen23 2017 年 12 月 19 日
Using find is not required, and just makes it much more complex. All you need is to use logical indexing:
idx = strncmpi(CC,' -',2);
CC(idx) = {'0'};
  4 件のコメント
Stephen23
Stephen23 2017 年 12 月 19 日
Putting a scalar numeric into square brackets is pointless. All you need is simply {0}.
Saeid
Saeid 2017 年 12 月 20 日
Thanks Stepehn, I changed that!

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

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by