editing a cell in a loop

3 views (last 30 days)
Max
Max on 8 Nov 2015
Edited: Geoff Hayes on 8 Nov 2015
If I have a 1 column cell
x=
'dog'
'at'
'cat'
'four'
'creative'
How do I write code that removes the words based on their length of letters. Like say I input n=1 it removes all words with letter 1 then n=2 it would remove all words with letter 2 so it would remove 'at' then n=3 removes all words with letter 3 so removes 'cat' and 'dog' leaving
x=
'four'
'creative'
Thanks

Accepted Answer

Geoff Hayes
Geoff Hayes on 8 Nov 2015
Max - use cellfun to apply a function to each element in your array. In your case, you could use the length function to determine the lengths of each string or to determine which strings are a certain number of characters long. For example, using your x from above
n = 2;
idcs = cellfun(@length(str)==2,x);
will return
idcs =
0
1
0
0
0
which tells us that the second string in x is of length two. We can then remove that string easily enough by doing
x(idcs) = [];
The above call to cellfun takes an anonymous function as its first input parameter
@(str)length(str)==2
where str is a string element from our cell array x. We calculate the length of str and compare it to two, so that the output from this call is logical (true or false).

More Answers (0)

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!