Reputation: 4926
I am new to matlab (few minutes old!). I have a vector of strings as:
methods = {'adaptiveMixtureDiscriminantAnalysis',
'gamSpline',
'genaralizedPartialLeastSquares'
'penalizedMultinomialRegression',
'quadraticDiscriminantAnalysis'}
I am using a switch-case
construct as follows:
for training_method = methods
switch training_method
case 'adaptiveMixtureDiscriminantAnalysis'
evalR('signal_and_conf <- adaptiveMixtureDiscriminantAnalysis(train_predictors, train_labels, test_predictors)');
case 'gamSpline'
evalR('signal_and_conf <- gamSpline(train_predictors, train_labels, test_predictors)');
case 'genaralizedPartialLeastSquares'
evalR('signal_and_conf <- genaralizedPartialLeastSquares(train_predictors, train_labels, test_predictors)');
case 'penalizedMultinomialRegression'
evalR('signal_and_conf <- penalizedMultinomialRegression(train_predictors, train_labels, test_predictors)');
case 'quadraticDiscriminantAnalysis'
evalR('signal_and_conf <- quadraticDiscriminantAnalysis(train_predictors, train_labels, test_predictors)');
case 'majorityVoting'
evalR('signal_and_conf <- majorityVoting(train_predictors, train_labels, test_predictors)');
otherwise
disp('No such model is available!')
end
end
But it gives me an error saying SWITCH expression must be a scalar or string constant.
I also tried using cellstr()
for training_method
and also using [training_method]
in switch construct but still no luck.
Update:
All I had to do was changing training_method
to char(training_method)
in switch statement and it worked. I am still confused with cell
and char
datatypes though.
Upvotes: 0
Views: 396
Reputation: 104484
Each element training_method
in your for
loop would be a cell array of a single element. You can only use switch
with an actual character array or integer literals, so you need to unpack the cell by either doing training_method{1}
, or char(training_method)
as you have stated in your update.
As such, do either:
for training_method = methods
switch training_method{1}
....
Or:
for training_method = methods
switch char(training_method) %// Already done by you
....
Upvotes: 1