I am unable to compare the multiple strings at once to produce the required output. I have tried the following code. Here I would like to compare the input string and print the result from statements.
function result = select(sports)
sports = {'hockey','tennis'};_
if strcmpi(sports,'hockey');x=1;end
if strcmpi(sports,'cricket');x=2;end
if strcmpi(sports,'football');x=3;end
if strcmpi(sports,'tennis');x=4;end
result
end

댓글 수: 2

Rik
Rik 2021년 1월 10일
What is your actual goal? I presume sports={'hockey','tennis'} is actually meant to be the input to your function (instead of overwriting it). If so, what do you want the output to be?
BHARAT CHARAN GOUD MARUPALLI
BHARAT CHARAN GOUD MARUPALLI 2021년 1월 11일
편집: BHARAT CHARAN GOUD MARUPALLI 2021년 1월 11일
Thanks for your response. Yes, the input is sports = {'hockey', 'tennis'} and I want the output as [1 4]. I am trying to assign the values to the multiple strings in a matrix form. I am able to do it for a single string, but I want to do it for multiple strings (but not all) at once.

댓글을 달려면 로그인하십시오.

 채택된 답변

Image Analyst
Image Analyst 2021년 1월 10일

1 개 추천

Is this what you want (using ismember to find the index of the sport in the list of all the sports?
% Test script:
fprintf('Beginning to run %s.m ...\n', mfilename);
allSports = {'hockey','tennis', 'cricket', 'football', 'racing', 'golf', 'Cody'};
thisSport = 'Football';
result = select(thisSport, allSports)
fprintf('%s is sport #%d.\n', thisSport, result);
fprintf('Done running %s.m.\n', mfilename);
%======================================================
function result = select(thisSport, allSports)
thisSport = lower(thisSport);
allSports = lower(allSports);
[~, result] = ismember(thisSport, allSports)
end

댓글 수: 5

Thank you very much. I have added few more 'sports' (or strings) to the variable thisSport, and I am able to compare multiple strings..
This was the first step of my problem, which is to assign the row number (or coulumn number) of the given string in large matrix. My actual problem was to extract a submatrix from a large matrix. My large matrix is given in Fig.1. If my input is = {'Hockey', 'Cricket','Golf','Racing'}, my output should generate a matrix of values as given in Fig.2. Can you please help me on this.
Fig.1
It looks like the code below should work.
result = select(thisSport, allSports);
Sports(result,result)
Please attach the Sports table in a .mat file if you still need help
save('answers.mat', 'Sports');
By the way, select is a built-in function so you might want to call it something else, like SelectSport() instead.
Thank you Rik and Image Analyst, it solved my problem.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by