About creating a string of specified length
16 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Image Analyst
le 6 Juil 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 commentaires
Image Analyst
le 6 Juil 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.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Characters and Strings dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!