MATLAB: Adding continuously to get a sum of how many words there are

matlab functionstring

function getWords
str = char('jeff john 2td');
n = size(str,1);
for t=0
for i = 1:n
if str(i,1) == isletter(str(i,1))
t+1;
end
if str(i,1) == isnumeric(str(i,1))
disp('For', str(i,1), 'it isnt a word')
end
end
end
disp(t);
end
I want to continuously add +1 to my t value of originally 0 when I get another word into my string, but as of right now it keeps displaying "t" as 0 for some reason. Trying to get the function to be capable of displaying how many words there are, but if the one of the words starts with a number the function WILL NOT count it as a word. For example: if the string is 'my 2sons had lunch' it would display it as the t variable having 3 words.
Thank you for your assistance.

Best Answer

NEW ANSWER: treats a word as one that starts with a letter
function wordcount = getWords
str = 'jeff john 2lion lion2 this2that dog.';
strcell = regexpi(str, '\w*', 'match');
%Defining word as one that starts with a letter (this2that would still be a word)
wordloc = cellfun(@(x) ~isempty(regexpi(x(1), '[a-z]')), strcell);
wordcount = sum(wordloc); %number of words
nonwordcount = sum(~wordloc); %number of non-words

%Displaying words / nonwords
fprintf('Is a word: %s\n', strcell{wordloc})
fprintf('Not a word: %s\n', strcell{~wordloc})
Outputs:
Is a word: jeff
Is a word: john
Is a word: lion2
Is a word: this2that
Is a word: dog
Not a word: 2lion
OLD ANSWER: One way to do this without loops:
function getWords
str = 'jeff john 2td tomorrow 3e4 a23 dog.';
strcell = regexp(str, '\s+', 'split');
wordloc = cellfun(@(x) isempty(regexp(x, '[^a-zA-Z\.]', 'once')), strcell); %gets location of string with only letter a-zA-Z
wordcount = sum(wordloc); %number of words, 4
nonwordcount = sum(~wordloc); %number of non-words