editing a cell in a loop

2 次查看(过去 30 天)
Max
Max 2015-11-8
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

采纳的回答

Geoff Hayes
Geoff Hayes 2015-11-8
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).

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by