How to fix the errors Arise from moving .m files and functions in folders?
Ältere Kommentare anzeigen
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 Kommentare
Stephen23
am 17 Jun. 2019
Have you tried adding those folders to the MATLAB Search Path?:
"...all the functions ... exist in Matlab projects path in C drive in my computer.."
Hopefully that does not mean that they were saved in the MATLAB installation folders.
Jan
am 17 Jun. 2019
What exactly do you call "Matlab's project path"?
"my first program shows errors" - this is not clear. Please post the relevant part of the code and the error messages. It is not possible to help you without knowing any details of the problem.
You can use different folders for different projects. Either with the GUI pathtool or with addpath and rmpath you can add folders to Matlab's path, such that the function in them are recognized. Moving files around is more complicated.
phdcomputer Eng
am 17 Jun. 2019
Jan
am 17 Jun. 2019
@phdcomputer Eng: Please post the names of the folders exactly as they are defined. "drive C->matlab->bin folder (matlab's projects path)" is still vague. Is it: "C:\Matlab\bin\" or "C:\Matlab\R2019a\bin\" or "C:\Matlab\bin folder"? Where is Matlab installed - start Matlab and post the output of the matlabroot command.
I do not know, what "Matlab's project path" means.
If you do not understand, what Matlab's search path is, take a look into the documentation, e.g.:
doc path
This path contains the list of folders to search the M-files in. If a folder is contained in the path, Matlab finds them.
Never include user-defined function inside Matlab's installation folder. If you do so, changes are not recognized, because the files and folders of Matlab's toolboxes are added as "freezed" to the path. See: doc path, doc addpath, doc rehash
phdcomputer Eng
am 17 Jun. 2019
Do NOT save anything under this folder:
C:\Program Files\MATLAB\
"but I usually use C:\Program Files\MATLAB\R2016a\bin for saving my projects"
Do NOT do that.
DO NOT save anything in any installation folders of any application.
Most MATLAB users save files to their personal directory, e.g. in the MATLAB default startup folder (depends on version):
phdcomputer Eng
am 18 Jun. 2019
phdcomputer Eng
am 18 Jun. 2019
phdcomputer Eng
am 18 Jun. 2019
Bearbeitet: Jan
am 18 Jun. 2019
Jan
am 18 Jun. 2019
@phdcomputer Eng: Please do not post the code of functions of Matlab's toolboxes.
Note that this seems to be a new question. Then open a new thread.
The error message is clear: The first input must be a struct generated by svmtrain. So post, what you use as first input.
Did you solve the problem of the location of M-files? Cleanup the folder C:\Program Files\MATLAB\R2016a\bin. Working with admin privileges is a bad idea at all, because it is too easy to destroy the Matlab installation.
You can store the user-defined M-files where you want, but not inside the C:\Programs or C:\Windows folders. Where do you save your other documents?
"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. I never said that you have to use a different drive.
What I wrote is that you should NOT save any of your personal files/documents in any installation folders of any application (or your OS). The obvious place to save personal files is in your documents folder.
"I didn't understand what is the Matlab search path."
That is why I gave you the link to read. These explanations might help too:
phdcomputer Eng
am 18 Jun. 2019
phdcomputer Eng
am 19 Jun. 2019
Walter Roberson
am 19 Jun. 2019
Try using
restoredefaultpath
However when I look at the list of things that are failing, I suspect even restoredefaultpath might fail.
You might need to find pathdef.m and delete (or rename) it. And possibly you might need to rename or delete your prefdir directory.
phdcomputer Eng
am 19 Jun. 2019
Bearbeitet: phdcomputer Eng
am 19 Jun. 2019
Jan
am 19 Jun. 2019
@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.
Akzeptierte Antwort
Weitere Antworten (1)
Suryaansh Mata
am 17 Jun. 2019
0 Stimmen
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 Kommentare
phdcomputer Eng
am 18 Jun. 2019
Suryaansh Mata
am 18 Jun. 2019
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
Kategorien
Mehr zu Startup and Shutdown finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!