Speed up string Assembly

1 回表示 (過去 30 日間)
Jonas Widmer
Jonas Widmer 2018 年 4 月 14 日
回答済み: Jonas Widmer 2018 年 4 月 15 日
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

採用された回答

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

その他の回答 (2 件)

Walter Roberson
Walter Roberson 2018 年 4 月 15 日
編集済み: Walter Roberson 2018 年 4 月 15 日
ch_String = sprintf('%10.4f', db_Value);
No loop. This does everything at the same time.

Jonas Widmer
Jonas Widmer 2018 年 4 月 15 日
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

カテゴリ

Help Center および File ExchangeGet Started with MATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by