How do you extract the actual name of your input variable in a function?

4 vues (au cours des 30 derniers jours)
Alex
Alex le 30 Oct 2014
Commenté : Alex le 30 Oct 2014
I need to extract the actual name of my input variable for naming a file. Here is my simple script.
function bmp=array2bmp(a)
bmp=uint8(a);
nam=strcat(varname(a),'.bmp');
imwrite(bmp,nam,'bmp');
end
and varname is a function defined as such
function n=varname(var)
n=inputname(1);
end
so if I have an array named 'testbmp' and I type
bmp=array2bmp(testbmp);
My output is a .bmp file named 'a.bmp' not 'testbmp.bmp'. This does not make sense to me. Is there a way I can call the actual name of my actual input variable instead of whatever dummy variable I wrote in the function?

Réponse acceptée

Geoff Hayes
Geoff Hayes le 30 Oct 2014
Alex - it does make sense since you are passing a variable named a into your function varname. To get the variable name testbmp, you would have to call inputname(1) from the within the function that "receives" this variable as an input I.e. array2bmp.
  1 commentaire
Alex
Alex le 30 Oct 2014
This worked. Thank you for your detailed explanation which helped me understand the reasoning behind the problem.

Connectez-vous pour commenter.

Plus de réponses (1)

Robert Cumming
Robert Cumming le 30 Oct 2014
can you not just do this:
function bmp=array2bmp(a)
bmp=uint8(a);
nam=strcat(inputname(1),'.bmp');
imwrite(bmp,nam,'bmp');
You dont need your sub function varname

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by