print variable-name in Matlab

后端 未结 4 1741
执念已碎
执念已碎 2020-12-01 21:20

I have a function in Matlab that has some variables in it. I need to print out the variable_names (in case of an exception etc.). I am aware of inputname func

相关标签:
4条回答
  • 2020-12-01 21:37
    varname=@(x) inputname(1);
    disp(['Error in var: ' varname(mat)])
    
    0 讨论(0)
  • 2020-12-01 21:41

    I'm adding another solution to the mix (one-liner):

    function myFunction()
        mat = [1 2; 3 4];
        disp(['Error in var: ' feval(@(x)inputname(1),mat)])
    end
    

    Which outputs:

    Error in var: mat
    
    0 讨论(0)
  • 2020-12-01 21:47

    If you want to print out the variables present in a function, you can use the function WHO. Here's an example using a simple function test.m:

    function test
      a = 1;
      b = 2;
      varNames = who();
      disp(sprintf('%s ','Variables are:',varNames{:}));
      c = 3;
      d = 4;
      varNames = who();
      disp(sprintf('%s ','Variables are:',varNames{:}));
    end
    

    Running this will give you the following output:

    >> test
    Variables are: a b 
    Variables are: a b c d varNames
    
    0 讨论(0)
  • 2020-12-01 21:59

    Matlab essentially does not let you do that. However, you can write a helper function to ease your pain in creating output like that:

    function disp_msg_var(msg, v)
      disp([msg inputname(2)]);
    end
    

    which you could call like so in your case:

    disp_msg_var('Error in: ', a);
    

    You can read more discussion on the topic on the Mathworks forum

    Additionally, to list all current variables with values you can use the who function, but that is not the problem you presented.

    0 讨论(0)
提交回复
热议问题