function with text string input and excel file

2 次查看(过去 30 天)
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

采纳的回答

Voss
Voss 2022-5-19
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 个评论
ML
ML 2022-5-19
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 2022-5-19
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

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by