About creating a string of specified length

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.

 채택된 답변

Image Analyst
Image Analyst 2014년 7월 6일

0 개 추천

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

Heng
Heng 2014년 7월 6일
Thank you but n is a variable, we don't know the exact value of n so we can't simply write 'BBB'. my question is: is s(1:n)='A' safe, i.e., does matlab really know the string is of length n and this assignment would never cause any memory access fault?
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.

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

추가 답변 (0개)

카테고리

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

제품

태그

질문:

2014년 7월 6일

댓글:

2014년 7월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by