Since some of the m-files I work with are very large, and contain many nested functions and subfunctions, I find it helpful to keep a short and simple table of contents in the top comment block that tells me which functions are in the m-file, their line numbers, and how they are nested. I wrote FTOC to generate this function table of contents automatically. This was inspired by a posting by Yair Altman on the mathworks newsgroup where he described how to use the undocumented function MLINTMEX. If you're interested in getting even greater detail about m-file contents, you should check out the postings by Urs Schwarz acknowledged below.
Here's how FTOC is used:
STR = FTOC(FILE) returns a character array table of contents STR for all nested functions and subfunctions within the m-file FILE (built-in functions are not displayed). The line numbers of each function are included, and the indentation of the function names indicates the nesting order. FILE should be an m-file name. If FILE is not found, or there are no subfunctions or nested functions, STR will be an empty string.
STR = FTOC(FILE,'insert') will return a character array table of contents STR formatted for the purpose of inserting it into the header comment block of the m-file FILE. Each line begins with the character '%' and the line numbers are adjusted to account for the fact that STR will be inserted somewhere within the top comment block of FILE. (NOTE: you will want to first remove any old table of contents from the comment block before pasting the new one in, to make sure the line numbers are adjusted correctly.)
(See function help for examples)
Kenneth Eaton (2021). ftoc (v1.2) (https://www.mathworks.com/matlabcentral/fileexchange/20164-ftoc-v1-2), MATLAB Central File Exchange. Retrieved .
I tried ftoc by running ftoc('staker.m') on R2018b and got a result that is very close to that of the help section of ftoc(). (I used Staker v0.6.) [NS] in the regular expression stands for sub-function and nested function, respectively.
ftoc reports methods of classes as sub-functions.
I tried it with 2018b Update 3 and it did't worked. I went step by step until the line
fileData = regexp(fileData,'[NS](\d+) (\d+) \d+ (\w+)\n','tokens');
where something happens under the hood and fileData is getting - "0×0 empty cell array"
I suppose mlintmex has changed the output format.
It's a pity :-(
While I cannot force the trash ratings by Marco to be removed, this is far better than his rating indicates. The help is quite good. This will be a useful utility if you work on large software projects in MATLAB.
Wording and initials suggest the poor poor rating was written by the infamous file exchange author 'marco', either by accident or in revenge. So far I thought DNFTT, but if it's true he now starts to mess up the rating system, I think there should be a way to block him and to annul his rating.
Is that comment supposed to make sense?... because it doesn't.
Program dont show this, dont show clssification. Future versions will show classification: You=Infinite==Infinite|or|Circle*NaN...
Is there some reason someone is downloading hundreds of copies of this?
The submissions mentioned by the first reviewer do an excellent job and are clearly superior to your program.
Thanks for the heads up, us. I don't know how I managed to miss FARG when I was looking around to see if anything like this had been done. It looks like a much more beefed-up and detailed version of what I was doing here... I'll have to check it out =).
I've submitted a slightly updated version to remove some mlint messages. The help description was also not formatting properly (no indents appeared, so you have to look at the function header for correct examples).
you also may want to look at FARG, available here
or FDEP, available here
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!