Speed up string Assembly

6 vues (au cours des 30 derniers jours)
Jonas Widmer
Jonas Widmer le 14 Avr 2018
Hi all,
Question: I try to assamble strings with the following loop (ch_empty10 = ' ', and db_Value(i) = e.g. 4.1563):
for i = 1:100000
ch_String = [ch_String, ch_empty10(1:10-length(num2str(db_Value(i)))),num2str(db_Value(i))] %(-> would result in ' 4.1563')
end
In my application I have >100'000 different db_Values and all need to be assembled the same way and are combined to one string. Is there somehow a way that I can avoid using a loop that goes thru all nodes to speed up the process.
I hope I formulated the question clear enough. Thanks for your help! Best, J

Réponse acceptée

Jonas Widmer
Jonas Widmer le 15 Avr 2018
Ah, think I found the solution:
ch_String = sprintf('%10.4f%10.4f%10.4f\r\n', [my_Matrix]')

Plus de réponses (2)

Walter Roberson
Walter Roberson le 15 Avr 2018
Modifié(e) : Walter Roberson le 15 Avr 2018
ch_String = sprintf('%10.4f', db_Value);
No loop. This does everything at the same time.

Jonas Widmer
Jonas Widmer le 15 Avr 2018
Cool! Thanks a lot for the quick answer. That's an awesome solution. Didn't know the sprinf command. My actual application is however a little more complex than I explained above:
I have a matrix 3 x >100'000 and in the end I try to have this in a .txt file. Is there a way to assemble the matrix that I have this shape in the end:
' 5.2342 1.2315 156.1561\r\n 453.1236 12.1231 15.1231\r\n 1.1561 8.8912 5.5613\r\n'
When my matrix is:
my_Matrix = [5.2342, 1.2315, 156.1561;...
453.1236, 12.1231, 15.1231;...
1.1561, 8.8912, 5.5613]
Cheers, J

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by