Convert Integer Array to String Array where repeated integers use "R" for repeated entries

1 view (last 30 days)
The question is a bit vague. An example will make this much more clear. Lets say I have the integer array A
A= [ 1 1 1 1 2 2
2 2 2 2 2 2
3 3 3 2 3 3];
My goal is to have the following array B (it can be character/cell/string) the only requirement is that I can then write B to a text file using fprintf.
B= '1 3R 2 7R 3 2R 2 3 1R';
Where "nR" repeats the preceding entry n times. I am going to be performing this on a large integer array (~ 5.0E+7 elements) so efficiency is crucial.
Thank you for your time.

Answers (3)

Alfredezeo
Alfredezeo on 28 Mar 2018
no ideas?

Walter Roberson
Walter Roberson on 28 Mar 2018
Edited: Walter Roberson on 28 Mar 2018
sprintf('%g %dR ', [values(:), counts(:)-1].' )
or if you are sure that values and counts are row vectors,
sprintf('%g %dR ', [values; counts-1]);

Alfredezeo
Alfredezeo on 28 Mar 2018
Worked like a charm! Thank You Walter

Community Treasure Hunt

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

Start Hunting!

Translated by