How do I enter same string input in a vector?

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?

Réponses (1)

UTMZ = repmat('30 T', 1, length(Sy)).';

4 commentaires

Charlotte Wargniez
Charlotte Wargniez le 27 Juil 2022
Modifié(e) : Charlotte Wargniez le 27 Juil 2022
Thank you for the suggestion.
Yet, this gives a character array, where each lettre/number is a character (i.e.: '3' '0' 'T' is 3 characters/rows).
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
Charlotte Wargniez le 27 Juil 2022
Modifié(e) : Charlotte Wargniez le 27 Juil 2022
i see. Thanks.
I was able to run the code if i created a cell array and then characterized each entry:
for i = 1:879
S = Contour1(i);
Sy = S.Lon;
Sx = S.Lat;
UTM = repmat({'17 T'}, length(Sy), 1);
UTMZ = char(UTM);
[SmokeLat, SmokeLon] = utm2deg(Sx',Sy',UTMZ);
plot(SmokeLat,SmokeLon)
i;
end
Thanks again!
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);

Connectez-vous pour commenter.

Catégories

En savoir plus sur Environment and Settings dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by