Finding cells with specific string in cell array and substituting them

21 次查看(过去 30 天)
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.

请先登录,再进行评论。

更多回答(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}.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Cell Arrays 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by