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.

 Respuesta aceptada

Matt Fig
Matt Fig el 6 de Nov. de 2012
Editada: Matt Fig el 6 de Nov. de 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 comentarios

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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Type Identification en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

S H
el 6 de Nov. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by