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?

Respuestas (1)

Walter Roberson
Walter Roberson el 26 de Jul. de 2022
UTMZ = repmat('30 T', 1, length(Sy)).';

4 comentarios

Charlotte Wargniez
Charlotte Wargniez el 27 de Jul. de 2022
Editada: Charlotte Wargniez el 27 de Jul. de 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 el 27 de Jul. de 2022
Editada: Charlotte Wargniez el 27 de Jul. de 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);

Iniciar sesión para comentar.

Categorías

Preguntada:

el 26 de Jul. de 2022

Comentada:

el 28 de Jul. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by