How to vectorize writing to a txt file

4 ビュー (過去 30 日間)
esbolico
esbolico 2013 年 4 月 24 日
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!

採用された回答

Cedric
Cedric 2013 年 4 月 24 日
編集済み: Cedric 2013 年 4 月 24 日
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) ;

その他の回答 (1 件)

esbolico
esbolico 2013 年 4 月 24 日
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 件のコメント
Cedric
Cedric 2013 年 4 月 24 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCharacters and Strings についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by