Convert a vector in Character array after a for loop
Mostrar comentarios más antiguos
Hi, given the following code
n=length(x)
f = zeros(1,n)
for i = 1:n
if x(i) == 1
f(1,i) = 22;
elseif x(i)==2
f(1,i) = 23;
elseif x(i)==3
f(1,i)= 21;
elseif x(i)==4
f(1,i) = 23;
elseif x(i)==5
f(1,i)= 24;
end
end
C= char (f)
I don't know why but the 'char' conversion doesn't work giving to me the following
so with nothing inside the vector, that I need later for a switch case.
Do you know how to fix the problem?
8 comentarios
madhan ravi
el 24 de Jul. de 2019
madhan ravi:
I would probably use:
str = f + ""
luca ruozi:
I need a character array and not a string, to run a switch cycle as I wrote above.
madhan ravi:
Could you illustrate how you want it to go?
luca ruozi:
n=length(x)
f = zeros(1,n)
for i = 1:n
if x(i) == 1
f(1,i) = 22;
elseif x(i)==2
f(1,i) = 23;
elseif x(i)==3
f(1,i)= 21;
elseif x(i)==4
f(1,i) = 23;
elseif x(i)==5
f(1,i)= 24;
end
end
C=char(f)
T21=3
T22=2
T23=3
T24=2
for i = 1:n
switch C
case 21
T21 = T21-1
case 22
T22 = T22-1
case 23
T23 = T23-1
case 24
T24 = T24-1
otherwise
disp ('dse')
end
end
I want then to put C inside the switch cycle
Stephen23
el 24 de Jul. de 2019
"I don't know why but the 'char' conversion doesn't work "
Actually char works exactly as documented.
You provide the input values 22 to 24 to char, and those are the exact characters that char gives you. Here is a simple example:
>> x = randi(5,1,9)
x =
5 1 3 2 2 3 4 2 3
then run your code to get exactly the non-printable characters that you requested:
>> f =
24 22 21 23 23 21 23 23 21
>> C =
and checking that char did everything correctly:
>> double(C)
ans =
24 22 21 23 23 21 23 23 21
The fact that you requested non-printable characters does not mean that char does not work, it just means that you need to learn about character encodings:
luca
el 24 de Jul. de 2019
"But the mean problem is that I cannot use C inside the switch cycle."
Actually you can: you just need to use exactly the same non-printable (and hence invisible) characters that you defined in C. Why you want complicate your life with non-printable characters is a mystery, but MATLAB is not stopping you from doing so.
"May you help me?"
I am not sure what you want: you told char to generate some non-printable characters, and so that is exactly what you got. What do you expect to happen? What are you actually trying to achieve?
Basil C.
el 24 de Jul. de 2019
what exactly do the values
f(1,i) = 22;
f(1,i) = 23;
f(1,i) = 21;
Represent?
luca
el 24 de Jul. de 2019
luca
el 24 de Jul. de 2019
"I don't know hot to do because I'm a really beginner."
That is okay, we are here to help. But so far you have not actually described what you are trying to achieve: you have not explained how the result/output should be derived from the input, or provided example input and output arrays.
Without a specification we have to rely on guessing what you are trying to achieve.
Forget about code, what are you trying to do ?
Respuesta aceptada
Más respuestas (1)
Matt J
el 24 de Jul. de 2019
Perhaps this is what you want?
>> f=[1,2,3,4], F=char(64+f)
f =
1 2 3 4
F =
'ABCD'
2 comentarios
luca
el 24 de Jul. de 2019
Matt J
el 24 de Jul. de 2019
You can loop over the elements of f,
n=length(x)
f = zeros(1,n)
for i = 1:n
switch f(i)
case 22
case 23
case 24
...
end
end
but I have a nagging feeling that a switch-case is not the best way of doing whatever it is you're trying to do.
Categorías
Más información sobre Loops and Conditional Statements 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!