Convert a vector in Character array after a for loop
古いコメントを表示
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 件のコメント
madhan ravi
2019 年 7 月 24 日
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
2019 年 7 月 24 日
"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
2019 年 7 月 24 日
"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.
2019 年 7 月 24 日
what exactly do the values
f(1,i) = 22;
f(1,i) = 23;
f(1,i) = 21;
Represent?
luca
2019 年 7 月 24 日
luca
2019 年 7 月 24 日
"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 ?
採用された回答
その他の回答 (1 件)
Matt J
2019 年 7 月 24 日
Perhaps this is what you want?
>> f=[1,2,3,4], F=char(64+f)
f =
1 2 3 4
F =
'ABCD'
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!