Reading existing function in MATLAB?

3 visualizaciones (últimos 30 días)
Saurav
Saurav el 23 de Abr. de 2024
Editada: DGM el 25 de Jul. de 2025
I have download some function of Matlab for my project work. Now when I am running that function then it is showing error
Error: >> stlRead
Execution of script stlRead as a function is not supported:
I:\Python coding\3d\New findings\vsangelidakis\vsangelidakis-SHAPE-f97791a\lib\stlTools\stlRead.m
Error in stlRead (line 1)
[v, f, n, name] = stlRead('aggregate_1.stl');
I am attcahing the folder of the function.
  1 comentario
DGM
DGM el 25 de Jul. de 2025
Editada: DGM el 25 de Jul. de 2025
The attached file is an incomplete, renamed copy of stlGetFormat() from FEX #51200 (stlTools). It's no longer valid code since it's truncated mid-scope, and it was renamed to something that's not even relevant anymore. Despite this file not being usable without error, it's never being used.
These are functions, not scripts. The files stlRead(), stlReadBinary(), stlReadAscii(), stlSlimVerts(), and stlGetFormat() need to be able to call each other as functions. If you remove the function definition, they don't work anymore.
Don't make random edits to a function and try to run it like a script. Make sure the relevant files are on the path, then call it with the appropriate input and output arguments as described in the synopsis.
% this will call stlGetFormat(). depending on the result,
% it will call either stlReadBinary() or stlReadAscii(),
% which will call stlSlimVerts() when it's done.
[V,F] = stlRead('myfile.stl'); % from FEX #51200
In R2018b or newer, you don't need to use stlTools. As Cris mentioned below, you can use stlread and stlwrite instead.

Iniciar sesión para comentar.

Respuesta aceptada

Cris LaPierre
Cris LaPierre el 23 de Abr. de 2024
Editada: Cris LaPierre el 23 de Abr. de 2024
The issue is that your function name is strReads, not stlRead. However, it is best practice to use the same name for the function and the file. You function is actually called stlGetFormat. You should rename your file so that it has the same name as your function, and use that name to call it.
type stlReads.m
function format = stlGetFormat(fileName) %STLGETFORMAT identifies the format of the STL file and returns 'binary' or %'ascii' fid = fopen(fileName); % Check the file size first, since binary files MUST have a size of 84+(50*n) fseek(fid,0,1); % Go to the end of the file fidSIZE = ftell(fid); % Check the size of the file if rem(fidSIZE-84,50) > 0 format = 'ascii';
You can learn more about creating functions in MATLAB here: https://www.mathworks.com/help/matlab/matlab_prog/create-functions-in-files.html
  1 comentario
Cris LaPierre
Cris LaPierre el 23 de Abr. de 2024
Incidentally, MATLAB has an stlread function.
unzip('aggregate_1.zip')
TR = stlread('aggregate_1.stl')
TR =
triangulation with properties: Points: [13535x3 double] ConnectivityList: [27066x3 double]
trimesh(TR)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Downloads en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by