Determine the type of input in a function??

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.

 Risposta accettata

Matt Fig
Matt Fig il 6 Nov 2012
Modificato: Matt Fig il 6 Nov 2012
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

3 Commenti

Matt, thanks for the help. I was thinking something along the lines of the function "isa" but this will certainly do the trick! Thanks!
Watch out for 'input.mat.xls' which is a .xls file but the code above would detect as being .mat
You might want to use FILEPARTS instead of STRFIND.

Accedi per commentare.

Più risposte (0)

Categorie

Community Treasure Hunt

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

Start Hunting!

Translated by