Borrar filtros
Borrar filtros

Replace zeros with text

19 visualizaciones (últimos 30 días)
Dylan Mecca
Dylan Mecca el 21 de Feb. de 2018
Editada: Stephen23 el 22 de Feb. de 2018
How could somebody replace zeros in a matrix or vector with a word?
For example, I'm trying to make a column n rows long that says the word 'hello'. How could I do that?
a = zeros(10,1)
a(a==0) = 'hello'
  3 comentarios
Dylan Mecca
Dylan Mecca el 22 de Feb. de 2018
I want to create a column vector of n amount of zeros. Then, replace those zeros with the word, 'hello'. I don't know how much simpler to ask that question. Replace zeros with 'hello'. If that isn't possible using a numeric array, is there another way?
The end goal is to make a column vector, n rows long, that says the word 'hello'. I will later then compare that vector to others for true/false outputs... but that is not applicable in this case. Is there a way to create a cell array that is n rows long that contains 'hello' in each row?
Jan
Jan el 22 de Feb. de 2018
@Dylan: The question might sound easy if you are not familiar with programming. For an experiences programmer zeros and strings are such completely different things, that it is hard to imagine, why you want to do this. A metaphor: Imagine you have a hand full of eggs and want to replace the eggs by sunsets. Hm.
Numbers (as zeros) are numbers and you cannot "replace" them by strings. Note that a single 0 inside a vector is one element of type double, while 'hello' is a vector of 5 elements of type char.
I will later then compare that vector to others for
true/false outputs
This sounds even more strange.
Is there a way to create a cell array that is n rows long
that contains 'hello' in each row?
Yes, this is clear. See Stephen's answer.

Iniciar sesión para comentar.

Respuestas (2)

Stephen23
Stephen23 el 22 de Feb. de 2018
"Is there a way to create a cell array that is n rows long that contains 'hello' in each row?"
repmat({'hello'},n,1)
  2 comentarios
Jan
Jan el 22 de Feb. de 2018
Or alternatively:
c = cell(n, 1);
c(:) = {'hello'}
Stephen23
Stephen23 el 22 de Feb. de 2018
Editada: Stephen23 el 22 de Feb. de 2018
Or
C = {'hello'};
D = C(ones(n,1))

Iniciar sesión para comentar.


James Tursa
James Tursa el 21 de Feb. de 2018
"... I'm trying to make a column n rows long that says the word 'hello' ..."
a = ('hello')';
The above results in a column vector that says 'hello'. Not sure what your real goal is.
  4 comentarios
Dylan Mecca
Dylan Mecca el 21 de Feb. de 2018
when using n = 11, I get:
a =
h
e
l
l
o
h
e
l
l
o
h
This doesn't solve how to make 'hello' repeat for n amount of rows, nor address how to replace zeros.
James Tursa
James Tursa el 21 de Feb. de 2018
Editada: James Tursa el 21 de Feb. de 2018
When you used n=11 above, I count a column of 11 rows in the output exactly as your wording requested. If you mean 11 rows of 'hello' stacked vertically, then just
a = repmat('hello',11,1);
Also, replacing char class elements into a double class variable will turn the char values into double values (the ASCII number of the character). It is not clear to me what you want for an output in this case. You can't have char class data stored inside a double class matrix. E.g.,
>> a = zeros(1,10)
a =
0 0 0 0 0 0 0 0 0 0
>> a(1:5) = 'hello'
a =
104 101 108 108 111 0 0 0 0 0
The char data simply gets converted to a double value ASCII equivalent.

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by