I would like to be able to check the spelling of a word within MATLAB without having to write my own spell checking algorithm.
MATLAB: Is there any way to check spelling from within MATLAB
checkcheckingMATLABspellspellcheckword
Related Solutions
You could try this:
UPDATE : here is a slightly modified version (also attached)
function wordsChecked = checkWordsSpelling( words ) %
% Based on Mathworks thread:
% http://www.mathworks.com/matlabcentral/answers/91885-is-there-any-way-to-check-spelling-from-within-matlab
% % - Split space-separated words into cell array of words, or wrap
% single word into cell array.
if ischar( words ) if any( words == ' ' ) words = strsplit( words, ' ' ) ; else words = {words} ; end end % - Launch MS Word and create document.
h = actxserver( 'word.application' ) ; h.Document.Add ; % - Build cell array of originals and suggestions.
words = words(:) ; % -> columns cell array.
nWords = numel( words ) ; for wId = 1 : nWords % - Check if spelling correct. Loop back if so.
isCorrect = h.CheckSpelling( words{wId,1} ) ; words{wId,2} = isCorrect ; if isCorrect words{wId,3} = false ; continue ; end % - Build cell array of suggestions.
nSug = h.GetSpellingSuggestions( words{wId,1} ).count; words{wId,3} = nSug > 0 ; if nSug > 0 for sId = 1 : nSug words{wId,4}{sId} = ... h.GetSpellingSuggestions( words{wId,1} ).Item(sId).get( 'name' ) ; end end end % - Quit MS Word.
h.Quit % - Build table (or struct array if you prefer).
%wordsChecked = cell2struct( words, {'original', 'isCorrect', 'hasSuggestion', 'suggestion'}, 2 ) ;
wordsChecked = cell2table( words, 'VariableNames', {'original', 'isCorrect', 'hasSuggestion', 'suggestion'} ) ; end
With that, you can do the following:
>> checked = checkWordsSpelling( 'Helloo' ) checked = original isCorrect hasSuggestion suggestion ________ _________ _____________ _______________________________ 'Helloo' false true 'Hello' 'Halloo' 'Hellos' >> checked = checkWordsSpelling( 'Helloo Wolrd Hello' ) checked = original isCorrect hasSuggestion suggestion ________ _________ _____________ __________ 'Helloo' false true {1x3 cell} 'Wolrd' false true {1x2 cell} 'Hello' true false [] >> checked.suggestion{2} ans = 'World' 'Word' >> checked = checkWordsSpelling( {'Helloo', 'Wolrd'} ) checked = original isCorrect hasSuggestion suggestion ________ _________ _____________ __________ 'Helloo' false true {1x3 cell} 'Wolrd' false true {1x2 cell}
Hope it helps!
To properly remove the ActiveX object to the Word application involves the use of the QUIT function and then the DELETE function. Note that this is a feature of Microsoft Word and not related to our ActiveX controls.
Here is a simple example to properly free the ActiveX handle to Word:
h = actxserver('Word.Application');invoke(h, 'quit');delete(h);
If the above code is executed within a function MATLAB function, the DELETE function is not required.
Best Answer