MATLAB: Determine the type of input in a function?

functioninput

is there a way to determine the type of input in a function?? For example,
Case 1: if input is a .mat file called 'input.mat' somefunction('input.mat') would recognize that the input is a .mat file
Case 2: if input is a mxn matrix variable called 'input' somefunction(input) would recognize the input as a matlab variable
Case 3: if input is an excel file .xlsx called 'input.xlsx' somefunction('input.xlsx') would recognize the input as an excel file.

Best Answer

Well you can't really pass a .mat file or excel file to a MATLAB function. You can pass a string name of a file. So something like this would work:
function []=getinput(A)
if ischar(A)
if strfind(A,'.mat')
disp('A .mat file name')
elseif strfind(A,'.xls')
disp('A .xls file name')
else
disp('Unknown file type')
end
else
disp(['You passed a ',class(A)])
end
Now we can test it out from the command line:
>> getinput('myfile.xls')
A .xls file name
>> getinput('myfile.xlsx')
A .xls file name
>> getinput('myfile.mat')
A .mat file name
>> getinput('myfile.m')
Unknown file type
>> getinput(magic(3))
You passed a double
>> getinput(true(2))
You passed a logical