How do I split this data into different column and write it back in a text file with an extention .bdf?
Mostrar comentarios más antiguos
I would like to split this data into different columns without any emoty cells and write it into a text file and save it as .bdf. Can you helps me ?
MAT1,88813,210000.0,,0.3,7.85e-09,,,,
MAT1,88815,210000.0,,0.3,7.85e-09,,,,
MAT1,88816,210000.0,,0.3,7.85e-09,,,,
MAT1,88817,210000.0,,0.3,7.85e-09,,,,
MAT1,88818,210000.0,,0.3,7.85e-09,,,,
Respuesta aceptada
Más respuestas (3)
So, what is this -- the content of some file, an array of text, a cell array... ??
What are we looking at here?
If it's a text file, simply
data=readcell('yourInputFile.ext');
data(:,all(~ismissing(string(data))));
will provide a cell array of the content w/o missing column(s).
Now, what is a ".bdf" file format to write???
ADDENDUM:
An alternative is to not bring in the empty cells to begin with -- use the import options object:
opt=detectImportOptions('addie.txt','MissingRule','omitvar');
data=readcell('yourInputFile.ext');
and your data array won't have missing variables in the first place.
We're still awaiting word on the output format to finish up...
4 comentarios
Karim
el 5 de Jul. de 2022
The MAT command defines the material properties for a finite element simulation. In this particular case, MAT1 indicates an isotropic material. 88813 is the material identifier, 210000 is the youngs modulus, 0.3 is the possion value and 7.84e-9 is the density.
That's well and good; but the Q? is what's the format for the file?
My recollection from years gone by is that they were fixed-width; has that restriction been lifted in modern era? (My consulting in the arena when I was interacting with those using NASTRAN ended 30+ years ago.)
A quickie search found a blog that says
"A field is an 8 character cell... Sixteen character fields exist, but this is a discussion for another time. Each line is at most 80 characters in length."
which would indicate need to use fixed-width fields yet. In that case, default formatting will NOT write a usable file.
Karim
el 6 de Jul. de 2022
the answers and comments has grown a bit, sorry if this is outdated :)
you are correct: the typical nastran input format is a fixed field format, where each field is made from 8 characters, the large field format uses the same princple but with 16 characters. And the free field format seperates the variables using comma's.
Following the standard field format (8 characters per variable), the mat1 line should look like
MAT1 888132.1000+5 0.3000007.8500-9

Adeline War
el 9 de Jul. de 2022
MyData = ["MAT1,88813,210000.0,,0.3,7.85e-09,,,,"
"MAT1,88815,210000.0,,0.3,7.85e-09,,,,"
"MAT1,88816,210000.0,,0.3,7.85e-09,,,,"
"MAT1,88817,210000.0,,0.3,7.85e-09,,,,"
"MAT1,88818,210000.0,,0.3,7.85e-09,,,,"]
% replace the comma
MyData = strrep(MyData,","," ")
% delete double spaces
MyData = regexprep(MyData,' +',' ')
% print the data to .bdf file
MyFile = fopen('test.bdf','w+');
fprintf(MyFile,'%s\n',MyData);
fclose(MyFile);
2 comentarios
Adeline War
el 5 de Jul. de 2022
dpb
el 5 de Jul. de 2022
@Adeline War Then see my Answer on how to remove the empty cells -- that's what the second line gives you starting with a cell array.
The real Q? still is the one about what is the required output format of the .bdf file?
Adeline War
el 5 de Jul. de 2022
2 comentarios
dpb
el 5 de Jul. de 2022
Don't use Answer for comments/amplifications...either edit the original Q? or add comments.
I already showed you two ways to get rid of the empty columns...and you've introduced another file extension without addressing the Q? of the format of the first. Let's deal with one thing at a time.
Of course one can modify any data content at will, but let's deal with one topic at a time instead of randomly.
dpb
el 5 de Jul. de 2022
C = textscan(fileID,'%s','Delimiter','\n');
is archaic and worst possible way (other than, perhaps, impordata) to approach.
What release of MATLAB are you using? Unless it's very old and you can't update; this is NOT the way to write new code (and given the little code that is here that is optimal, there's no real good reason to keep this and not rewrite it more effeciently.)
Categorías
Más información sobre Text Files en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!