function with text string input and excel file

3 Ansichten (letzte 30 Tage)
ML
ML am 19 Mai 2022
Kommentiert: Voss am 19 Mai 2022
How can I write a function that takes input of (filename, user_input)... basically the user input would be a text string that will return the values of the corresponding string from the excel sheet.
ex: i want to get info from car model x so my input is 'x' then it returns the following:
car model color HorsePower Mileage
x red 250 20

Akzeptierte Antwort

Voss
Voss am 19 Mai 2022
warning off all
get_car_info('Cars.xlsx','x')
ans = 1×4 table
carModel color HorsePower Mileage ________ _______ __________ _______ {'x'} {'red'} 250 20
get_car_info('Cars.xlsx','y')
ans = 1×4 table
carModel color HorsePower Mileage ________ ________ __________ _______ {'y'} {'blue'} 350 27
get_car_info('Cars.xlsx','z')
ans = 1×4 table
carModel color HorsePower Mileage ________ _________ __________ _______ {'z'} {'green'} 200 36
function out = get_car_info(filename,model)
T = readtable(filename);
% two ways, depending on what the input files might look like:
% 1) this finds where the user-input "model" is located in the first
% column of the table, which may or may not be called "carModel":
out = T(strcmp(T{:,1},model),:);
% 2) this finds where the user-input "model" is located in "carModel"
% column of the table, which may or may not be the first column:
out = T(strcmp(T.carModel,model),:);
end
  4 Kommentare
ML
ML am 19 Mai 2022
Thanks thats reallly helpful. What I meant to aask is what if my input is 'z' but its not there how could I get an error for that?
Voss
Voss am 19 Mai 2022
Including an error check for unmatched specified model:
function out = get_car_info(filename,model)
if ~nargin
error('not enough input arguments'); % error if no inputs
elseif nargin < 2
model = 'x'; % default model value if only one input
end
T = readtable(filename);
% two ways, depending on what the input files might look like:
% 1) this finds where the user-input "model" is located in the first
% column of the table, which may or may not be called "carModel":
idx = strcmp(T{:,1},model);
% 2) this finds where the user-input "model" is located in "carModel"
% column of the table, which may or may not be the first column:
idx = strcmp(T.carModel,model);
% in either case, check that there is a valid model match:
if ~any(idx)
error('model %s does not appear in the table',model);
end
% return the sub-table matching model:
out = T(idx,:);
end

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by