Error on Switch/case with cell array char data

Hello I am getting "SWITCH expression must be a scalar or a character vector." when i run my code bellow. I want to take an typed input from the user split it into individual cells and then check the variable with the created switch case concatenating the resulting letter's probability into a new variable. I know it has something to do to converting the inputted cell values into a character vector but I haven't found any good way to do it. Any help would be appreciated
get = input('type(letters only, no puncuation): ' , 's');
split = num2cell(get);
sorted_split = sort(split);
input_prob = [];
for n = 1 : length(sorted_split)
switch sorted_split{n}
case ' '
horzcat(input_prob,0.1859);
case 'a'
horzcat(input_prob,0.0642);
case 'b'
horzcat(input_prob,0.0127);
end
end
...

2 Comments

Your code runs for me without giving the error message you mention. Can you share exactly what you are using for input to create the error? Also, please copy/paste the error message here (all the red text). I wonder if the error may be coming from code that you have not shared here.
My apologies I have forgotten that I have been playing around with parfor loops for no real reason expect for speed. the error message that is given is
Error using fff (line 9)
SWITCH expression must be a scalar or a character vector.
%#ok<*MFAMB>
tic
close all
get = input('type(letters only, no puncuation): ' , 's');
split = num2cell(get);
input_prob = [];
parfor n = 1 : length(split)
switch split(n)
case ' '
horzcat(input_prob,0.1859);
case 'a'
horzcat(input_prob,0.0642);
case 'b'
horzcat(input_prob,0.0127);
case 'c'

Sign in to comment.

 Accepted Answer

After looking at multiple answer i have solved my question. I have removed the parfor loop that was there and used Vasishta Bhargava answer for the switch case. Thank you all for your help
close all
get = input('type(letters only, no puncuation): ' , 's');
split = char(lower(get));
input_prob = [];
for n = 1 : length(split)
switch split(n)
case ' '
input_prob = horzcat(input_prob,0.1859);
case 'a'
input_prob= horzcat(input_prob,0.0642);
case 'b'
input_prob = horzcat(input_prob,0.0127);
case 'c'
input_prob = horzcat(input_prob,0.0218);
case 'd'

More Answers (0)

Categories

Products

Release

R2019b

Asked:

on 21 Nov 2020

Answered:

on 21 Nov 2020

Community Treasure Hunt

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

Start Hunting!