About creating a string of specified length
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Heng
am 6 Jul. 2014
Kommentiert: Image Analyst
am 6 Jul. 2014
The goal is to create a string of specified length with the same chars. For example, given variable n=5, I want to obtain 'AAAAA'. at first I used the following code:
s(1:n)='A';
But I was not sure if it is correct because I don't know how matlab decides the end of the string. We all know that in C any string is ended with '\0', but what about matlab? Also, if s is first assigned a long string, and then a shorter one, like this:
s(1:5)='A';
s(1:3)='B';
s would be BBBAA, instead of BBB as expected. So I then rewrite the code as follows:
s='';
s(1:n)='A';
Is the above code absolutely correct? If not, should the following code a standard (and correct) way of creating a string of specified length n with the same char?
s=blanks(n);
s(1:n)='A';
Thanks for any help.
0 Kommentare
Akzeptierte Antwort
Image Analyst
am 6 Jul. 2014
Your code is fine. You do not need to initialize s to '' though - that doesn't do anything once all is said and done. For the BBBAA case, the first line makes 5 A's. The second line assigns the first three elements of it to B and leaves elements 4 and 5 as A, as I (though not you) expected. If you wanted just BBB you wouldn't use the 1:3 index. That is equivalent to
for k = 1 : 3
s(k) = 'B'
end
If you want BBB, just leave out the indexes and write s = 'BBB'. In that case there will be no trailing A's. I hope that explains it better.
2 Kommentare
Image Analyst
am 6 Jul. 2014
Use repmat() to replicate a matrix (or even a single number of character):
s = repmat('A', [1, n]) % Replicate 1 time vertically, n times horizontally.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!