How to vectorize writing to a txt file

3 visualizaciones (últimos 30 días)
esbolico
esbolico el 24 de Abr. de 2013
Hi there,
I have to write a function in matlab to create a txt file with the following format:
(x(1),y(1)),(x(2),y(2)),...(x(end),y(end))
I have the following piece of code (whre L is the length of vectors x and y)
for r=1:L;fprintf(fileOutput,['(',num2str(time(r)),',',num2str(signal(r)),'), ']);end
which obviously does the trick but I was wondering if anybody knows how to vectorize the expresion so that it runs much faster.
Any help will be welcomed!!
Thank you!

Respuesta aceptada

Cedric
Cedric el 24 de Abr. de 2013
Editada: Cedric el 24 de Abr. de 2013
You could go for something like this:
buffer = sprintf('(%f,%f),', [time; signal]) ; % FormatSpec repeated.
buffer(end) = [] ; % Remove extra ','.
fid = fopen('output.txt', 'w') ;
fwrite(fid, buffer) ;
fclose(fid) ;

Más respuestas (1)

esbolico
esbolico el 24 de Abr. de 2013
Dear Cedric,
thank you very much for you solution. Certainly it is a very clever solution and my program now runs hundreds of times faster. I did not even now the sprintf function, thank you for introducing it to me!
Regards
  1 comentario
Cedric
Cedric el 24 de Abr. de 2013
Dear Esbolico,
The interesting "thing" with SPRINTF and FPRINTF, is that they will repeat the format (here '(%f,%f),') as many time as needed to print all elements of the array(s) that are given to them. It is certainly useful when you want to avoid writing loops. I'm glad it helped!
Regards

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings 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