Reading the required variables for a function

1 visualizzazione (ultimi 30 giorni)
Adam
Adam il 5 Nov 2013
Is there a function that will read the number and names of variables needed to run a function. I'm working on a brute force solution now that just opens the function as a text file and searches for the function declaration then reads the strings between the parenthesis.
  2 Commenti
Azzi Abdelmalek
Azzi Abdelmalek il 5 Nov 2013
Do you want the number of variables or their names?
Adam
Adam il 5 Nov 2013
Both, your answer is a viable option, but I don't see how it will read the variables if the function call is not the first line of the .m file.

Accedi per commentare.

Risposte (3)

Azzi Abdelmalek
Azzi Abdelmalek il 5 Nov 2013
Modificato: Azzi Abdelmalek il 5 Nov 2013
fid = fopen('file.m');
line=''
while isempty(line)
line=fgetl(fid)
end
fclose(fid);
v=regexp(line,'(?<=\().+(?=\))','match')
n=strfind(v{1},',') % number of variables
%If you want their names
w=regexp(v{1},',','split')
  6 Commenti
Walter Roberson
Walter Roberson il 5 Nov 2013
Comments can start anywhere on a line. Also, blanks are permitted on lines.
line = regexprep(line, {'%.*', '^s+'}, {'', ''});
Azzi Abdelmalek
Azzi Abdelmalek il 5 Nov 2013
The first character of line is always different from ' '

Accedi per commentare.


Image Analyst
Image Analyst il 5 Nov 2013

Adam
Adam il 5 Nov 2013
Modificato: Adam il 5 Nov 2013
Thanks for the help Azzi. I never used the regexp function before. It works really well in this application.
function [nvars,vars] = req_variables(filename)
% % Open the file for reading only.
[fid,msg] = fopen(filename,'r');
if fid <= 0
disp('Was not able to open file');
disp(msg)
return;
end
% Read the file, line by line, until we find the function call
line = ' ';
while (~strcmp(line(1:8),'function'))
line = fgetl(fid);
end
% Read the variable names and number from the line
v=regexp(line,'(?<=\().+(?=\))','match');
nvars =strfind(v{1},','); % number of variables
vars=regexp(v{1},',','split');
%Close the file
fclose(fid);

Categorie

Scopri di più su Variables in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by