sprintf: how to efficiently create a string of 75 numbers, separated by comma

I have an array which contains 75 numeric elements. I want to write these numbers as a string separated by a comma. If there were few numbers, I could use 'sprintf' as follows:
A=[1,2];
str=sprintf('%d,%d',A(1:end));
I need an efficient way to do it when there are many entries in A.

 채택된 답변

You can still use sprintf. You just need to create a ‘dynamic’ format string:
A = 1:5;
str = sprintf([repmat('%d,',1, numel(A)-1), '%d'], A)
str =
'1,2,3,4,5'
That will adapt for any ‘A’ vector.

추가 답변 (2개)

Ameer Hamza
Ameer Hamza 2018년 4월 27일
편집: Ameer Hamza 2018년 4월 27일
This will work.
strjoin(string(A), ',')

댓글 수: 2

Note: this requires R2016b or later. Also, it creates a string object output, not a character vector.
Thanks for elaborating.

댓글을 달려면 로그인하십시오.

Stephen23
Stephen23 2018년 4월 27일
편집: Stephen23 2018년 4월 27일
"I need an efficient way to do it when there are many entries in A."
This is probably about the most efficient way:
A = 1:5;
str = sprintf(',%d',A);
str = str(2:end);
Timing comparisons for 1e4 iterations:
Elapsed time is 0.539053 seconds. % this answer.
Elapsed time is 2.54425 seconds. % Star Strider's answer.

댓글 수: 2

I didn't answer -- I commented on someone else's answer.
Stephen23
Stephen23 2018년 4월 27일
편집: Stephen23 2018년 4월 27일
@Walter Roberson: you are right, sorry for the confusion. I fixed the reference.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

질문:

2018년 4월 27일

편집:

2018년 4월 27일

Community Treasure Hunt

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

Start Hunting!

Translated by