How to fix the errors Arise from moving .m files and functions in folders?

3 次查看(过去 30 天)
I wrote some codes in Matlab for classification and I achieved the desired results, all the functions which were used in the program exist in Matlab projects path in C drive in my computer but for running another clustering program in Matlab, I removed the .m files and functions from the Matlab's projects path and saved all of them as a folder in C drive.
Now my first program shows errors about some of these functions while It didn't have any problems with the function's codes before, even I returned files to the previous state but this problem still exists.
Should I put the required functions in the Matlab's projects path or in another folder?
I'll be grateful to have your opinions about how to fix these errors.
  16 个评论
phdcomputer Eng
phdcomputer Eng 2019-6-19
编辑:phdcomputer Eng 2019-6-19
Thanks
I used restoredefaultpath in command , as you have said, Matlab shows undefined function or variable
and for pathdef.m I searched I don't have this file , prefdir also shows the same error.
even MATLAB doesn't recognize clc in command.
Maybe the only way is reinstalling MATLAB software?
Jan
Jan 2019-6-19
@phdcomputer Eng: I assume you have destroyed the Matlab installation. The clean solution is to uninstall Matlab, delete the installation folder, and to re-install it. Afterwards avoid working with admin privileges and do not write files in Matlab's installation folder.

请先登录,再进行评论。

采纳的回答

Guillaume
Guillaume 2019-6-18
Ok so I should move all of the programs and functions (.m files ) in other drive except drive C (which Matlab has installed), for example drive D. Is It right?
No. You use any drive you want including the one where matlab is installed.
What you mustn't do, and this is not specific to matlab, is store any of your code/documents/pictures/etc. under Program Files or any of its subdirectory. Similarly, don't put your files in the Windows directory.
Typically, Matlab would have created a directory for you to store your files in. You can see what it is by typing
userpath
at the matlab prompt. It normally is C:\Users\yourusername\Documents\MATLAB.
As for, I think I can use absolute path for functions so the errors will be fixed
I don't know what Suyraansh Mata really meant, but it is not an option for functions. You cannot call a function by its full path. Even for scripts it's a bit iffy, the only way to invoke them by their full path is to use run.
The proper way to manage the scope of your functions is to put their folder on the matlab path. So you'd put all your files in
mypath = fullfile(userpath, 'SomeMeaningfulFolderName')
then
addpath(mypath)
to make them all visible to matlab.
  1 个评论
phdcomputer Eng
phdcomputer Eng 2019-6-19
The Matlab software installed on my computer(windows OS) shows a lot of errors when I tried to change the search path by using addpath command , suddenly MATLAB shows errors even for the startup and doesn't recognize any functions or variables or any commands
I usually saved my projects in C:\Program Files\MATLAB\R2016a\bin and when I tried to change the search path to C:\Users\Bita\Documents\MATLAB by using
addpath('newpath')
and also usnig
mypath=fullfile(userpath,'foldername')
addpath(mypath)
and then MATLAB is showing iterative errors while I'm not running any programs, even for MATLAB startup ,It shows a lot of errors
The errors are:
Undefined function or variable 'matlabrc'.
Undefined function or variable 'which'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable 'rmiml.getAll'.
Undefined function or variable 'fschange'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Undefined function or variable
'internal.matlab.desktop.editor.isSystemObjectFile'.
Undefined function or variable 'rmiml.visibleInToolstrip'.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.mathworks.mlwidgets.graphics.ModelStateFactory.createNoSelectionModelState(ModelStateFactory.java:251)
at com.mathworks.mlwidgets.graphics.PlotToolSetFactory$3.parseComplete(PlotToolSetFactory.java:123)
at com.mathworks.mlwidgets.graphics.ModelStateFactory$ProductInfoListener$1$1.run(ModelStateFactory.java:1032)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
I'll be very grateful to have your opinions about how to fix MATLAB software
Thanks

请先登录,再进行评论。

更多回答(1 个)

Suryaansh Mata
Suryaansh Mata 2019-6-17
TLDR: Any folder/directory can be added to MATLAB's path using the 'addpath' command.
MATLAB can access functions in the following ways -:
1) Direct access via a function's name - This is possible when the function .m file exists in the current working directory or the defined matlab path
2) Absolute Path - Accessing a function not in the current path, using it's absolute path. If trying to call a function using it's absoute path matlab does not throw any error
3) Adding a function or a directory to MATLAB's path - If a function is in Matlab's search path, it can be accessed directly. Try seeing if the current folder is in MATLAB's path using the 'path' command and seeing from the list that is generated. Or a directory can be added to this path using the 'addpath' command.
This can help with any errors while trying to access functions not in the present directory.
  2 个评论
phdcomputer Eng
phdcomputer Eng 2019-6-18
Thank you very much
As you have said, I think I can use absolute path for functions so the errors will be fixed, how can I define absolute path for the functions?
Suryaansh Mata
Suryaansh Mata 2019-6-18
Just use the direct path like 'C:/Documents/MyFolder/myfunction.m' in case of Windows system or 'home/MyDirectory/myfunction.m' in case of Linux/Mac OS

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by