Finding cells with specific string in cell array and substituting them

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.

 Accepted Answer

You can simply use strrep to replace strings in a cell array:
CC = {'A',' -','B',' -','C'}
CCout = strrep(CC,' -', '0')

2 Comments

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.
Ah, your cell is a mixture of strings and numbers ...
CC(strcmpi(CC,' -')) = {0}

Sign in to comment.

More Answers (1)

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 Comments

Thanks Stepehen, but in the output forat the result still looks like '0' and not [0], and I still get an error trying to turn the whole thing to a numerical array.
cell2mat(CC)
Error using cell2mat (line 45)
All contents of the input cell array must be of the same data type.
Nevermind, I guess I just had to replace {'0'} with {[0]}!!! Thanks anayway!
Putting a scalar numeric into square brackets is pointless. All you need is simply {0}.
Thanks Stepehn, I changed that!

Sign in to comment.

Categories

Asked:

on 19 Dec 2017

Commented:

on 20 Dec 2017

Community Treasure Hunt

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

Start Hunting!