To Create a Variable with the name of a folder

11 visualizaciones (últimos 30 días)
Peter
Peter el 2 de En. de 2015
Comentada: Stephen23 el 2 de En. de 2015
Hello!
I have a variable called this way;
workfolder='C:\Users\Jorge\Desktop\Work_Christmas\Measurements\rpm_measurements\rpm0800\';
And i would like to create another variable and it is the end of the name of my directory (workfolder), in order to use it with a loop, in this case it would be:
new_variable = rpm0800
How could i do it?
Thanks!
  2 comentarios
Jan
Jan el 2 de En. de 2015
Do you mean:
new_variable = 'rpm0800'
with the quotes?
Peter
Peter el 2 de En. de 2015
Yes exactly!

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 2 de En. de 2015
Editada: Stephen23 el 2 de En. de 2015
While the question is rather unclear, it seems that the OP wishes to extract the last directory in the filepath string. This can be achieved using fileparts :
>> [A,B] = fileparts(workfolder(1:end-(workfolder(end)==filesep)))
A = 'C:\Users\Jorge\Desktop\Work_Christmas\Measurements\rpm_measurements'
B = 'rpm0800'
Note first this removes any trailing file separator character using the indexing of the workfolder string. An alternative is to use regexp to locate the last directory in the filepath string:
>> regexp(workfolder,'[^/\\]+(?=[/\\]?$)','once','match')
ans = 'rpm0800'
You should also have a good read of the MATLAB wiki, which covers all of these basic usage questions, with handy examples too:
  2 comentarios
Peter
Peter el 2 de En. de 2015
Thank you very much Stephen, it worked
Stephen23
Stephen23 el 2 de En. de 2015
My pleasure!

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 2 de En. de 2015
It's usually advised that you don't do that . However there is capability in MATLAB to do it and the FAQ shows some ways, such as using dynamic structure field names.
  4 comentarios
Image Analyst
Image Analyst el 2 de En. de 2015
If, like I do, you have trouble figuring out complicated regexp expressions like '[^/\\]+(?=[/\\]?$)' , or would take too much time figuring that out, then you can use John D'Errico's incredibly handy and easy-to-use utility called allwords http://www.mathworks.com/matlabcentral/fileexchange/27184-allwords. It splits up the string into separate words and gives you control over the word separators. Here is some code that I think you'll find a lot easier to use and remember to use than those cryptic regexp expressions:
workfolder='C:\Users\Jorge\Desktop\Work_Christmas\Measurements\rpm_measurements\rpm0800\';
subFolders = allwords(workfolder, '\')
deepestFolder = subFolders{end}
I left off the semicolons at the end of the lines so you can see what it produces in the command window:
subFolders =
'C:' 'Users' 'Jorge' 'Desktop' 'Work_Christmas' 'Measurements' 'rpm_measurements' 'rpm0800'
deepestFolder =
rpm0800
What do you think, Peter? Is allwords() easier/simpler? Which do you prefer?
Stephen23
Stephen23 el 2 de En. de 2015
It is true that Regular Expressions have a rather cryptic syntax and can take a while to master, however they are a powerful tool that can be met in many different programming languages, and thus they are well worth the effort of learning. The fact that regexp is inbuilt means your code remains portable, without relying on any third-party functions (and licences...)
The example that Image Analyst gives above could also be achieved using standard MATLAB regexp:
>> regexp(workfolder,'\w+','match')
ans = {'C','Users','Jorge','Desktop','Work_Christmas','Measurements','rpm_measurements','rpm0800'}
Users wanting to practice and learn about Regular Expressions can try my compact Regular Expression Helper, which opens a figure and uses real-time updating of regexp's inputs and outputs to allow endless experimentation and refining of Regular Expressions:

Iniciar sesión para comentar.

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by