How do I enter same string input in a vector?
Mostrar comentarios más antiguos
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
el 26 de Jul. de 2022
UTMZ = repmat('30 T', 1, length(Sy)).';
4 comentarios
Charlotte Wargniez
el 27 de Jul. de 2022
Editada: Charlotte Wargniez
el 27 de Jul. de 2022
Walter Roberson
el 27 de Jul. de 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
el 27 de Jul. de 2022
Editada: Charlotte Wargniez
el 27 de Jul. de 2022
Walter Roberson
el 28 de Jul. de 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);
Categorías
Más información sobre Resizing and Reshaping Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!