Filter löschen
Filter löschen

MATLAB:UndefinedFunction error, even when file is found on path

2 Ansichten (letzte 30 Tage)
Benjamin Bratton
Benjamin Bratton am 1 Nov. 2016
Kommentiert: Benjamin Bratton am 10 Nov. 2016
I have an .m file that I would like to run called bacteria2, however, I can't seem to convince MATLAB (R2016a, OSX 10.11) to run it. When I attempt to execute
bacteria2();
This results in the error message
Undefined function or variable 'bacteria2'.
In case it helps to know which error code is being triggered, the error id from
[errMsg,errId] = lasterr
is
MATLAB:UndefinedFunction
However, attempting to open the program in the editor from the command line works fine. That is,
edit('bacteria2')
opens the correct copy of 'bacteria2' in my Dropbox folder for editing. The issue seems to be something to do with the fact that there are odd characters in the path.
which('bacteria2','-all');
Gives an output of
/Users/benbratton/Dropbox/Alex L <> Ben B/bacteria2.m
Another symptom of this path issue is the inability to enable breakpoints in the file. Once the file is open in the editor, any attempt to enable a breakpoint in the editor results in the following error message
My workaround is to move the file to a different location and then manually copy it over to dropbox when I want to share changes with my collaborator. It would be great to have a better solution.
  2 Kommentare
Guillaume
Guillaume am 1 Nov. 2016
I can't help about your issue, there certainly is some characters that have special meaning in the path (@ and +) but as far as I know < and > are ok.
However, I would like to point out that a much better and safer way of sharing changes with collaborators is to use a version control system. Not only do they track changes but these have diff and merge tools to show you exactly what has changed and handle conflicting changes. Matlab has built-in support for git and subversion.
Benjamin Bratton
Benjamin Bratton am 1 Nov. 2016
Thanks! I agree that SVN/git are great tools for version tracking and managing conflicts. In addition, I find it really convenient to be able to switch between feature sets by simply checking out a different branch. We decided on Dropbox for this particular situation because not all of my coworkers are willing to make the jump to git.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Walter Roberson
Walter Roberson am 1 Nov. 2016
lasterr does not change until you either overwrite it or a new error occurs. You have not shown us bacteria2 failing: what you show is the possibility that it worked fine but lasterr had happened to be set to that before bacteria2 was run.
You should also consider the possibility that MATLAB is not able to access the file directly off of Dropbox . You might need to copy the file locally.
  3 Kommentare
Walter Roberson
Walter Roberson am 2 Nov. 2016
I have had difficulty in the past in which files in my Dropbox or Google Drive could not be fully accessed while they were there. I did not try to debug the problem, as it was much the same problem as used to occur with NFS and NFSv2 servers, race conditions, and some ioctl()'s. Networked file systems are hard to do right.
Benjamin Bratton
Benjamin Bratton am 10 Nov. 2016
Thanks for the tip, unfortunately my error does not seem to be Dropbox related. I made new fictitious directories containing "<", "<>", "><" and ">". All folders including ">" in the path result in this error. The folder with only a "<" was perfectly acceptable to MATLAB's parser.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Source Control Integration finden Sie in Help Center und File Exchange

Tags

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by