How do I enter same string input in a vector?
Show older comments
I am trying to create a vector (not a string array) with repeated string entries such as "30 T" for a specific length.
for i = 1:879
S = Contour1(i);
Sy = S.Lon
Sx = S.Lat
UTMZ = zeros(length(Sy),1);
UTMZ(:)= ['30 T'];
GeoDeg = utm2deg(Sx',Sy',UTMZ)
plot(Sx,Sy)
i;
end
After creating a vector, I can't seem to have the entry repeat itself. I can't also manually entre the values in each vector because the length of the vector varies for each loop.
Any sugestions on how to entre a repeating string within a vector?
Answers (1)
Walter Roberson
on 26 Jul 2022
UTMZ = repmat('30 T', 1, length(Sy)).';
4 Comments
Charlotte Wargniez
on 27 Jul 2022
Edited: Charlotte Wargniez
on 27 Jul 2022
Walter Roberson
on 27 Jul 2022
Yes, that is what you asked for. You specified that a string() array is not to be created, and you asked that a vector be created.
MATLAB has a small number of ways to deal with text:
- in cases where each group of text is to be treated as a single item, such as wanting UTMZ(7) to refer to text 30 T then using a string array is recommended
- in cases where individual characters need to be directly addressable and you are dealing with exactly one text group, use a row vector of char
- in cases where you have a 2d array of text of fixed size, and need to address each character directly, such as a Battleships map, use a 2d array of char
- in cases where you have text groups of different size, perhaps a row or column vector of such groups, and you do not wish to use a string() array, use a cell array of character vectors.
UTMZ = repmat({'30 T'}, length(Sy), 1);
The individual cells can be examined and changed such as UTMZ{7} = '18 T';
Charlotte Wargniez
on 27 Jul 2022
Edited: Charlotte Wargniez
on 27 Jul 2022
Walter Roberson
on 28 Jul 2022
I found that function in the File Exchange. It is an odd function -- it requires that the third parameter be a 2d array of character with four columns and the letter codes have to be in the 4th column.
The particular case of a 2D array of char is the one I referred to in the line about a Battleships map. The technique you used with repmat of a cell array and char() that, is fine, but you could also be more efficient as
UTMZ = repmat('17 T', length(Sy), 1);
Categories
Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!