Error on Switch/case with cell array char data

6 ビュー (過去 30 日間)
James Wang
James Wang 2020 年 11 月 21 日
回答済み: James Wang 2020 年 11 月 21 日
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 件のコメント
Cris LaPierre
Cris LaPierre 2020 年 11 月 21 日
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.
James Wang
James Wang 2020 年 11 月 21 日
編集済み: James Wang 2020 年 11 月 21 日
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'

サインインしてコメントする。

採用された回答

James Wang
James Wang 2020 年 11 月 21 日
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'

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by