Help creating loop that converts text to numbers
古いコメントを表示
Hi, this is a follow-up on a question I asked yesterday.
I have a loop that asks the user to input sentences until the word 'end' is typed.
After the loop has ended, I want it to display the sentences typed as inegers, using the "char" command
ex
char([101 102 103])
but reversed since it would be taking the letters and converting them to integers.
Here is what I have so far.
The other loop to execute this specific function is probably extremely wrong but I am an absolute beginner and was just trying to follow a similar format to the first loop I recieved some help with yesterday.
clc
N=input('what is N?: ') %establishes N
all_A = {};
while true
A = input('give me a sentence!: ','s'); %asks user for sentence input
if strcmpi(strtrim(A), 'end');
break;
end %will end the loop if end is typed
all_A{end+1} = A;
end
all_B={};
while false
B= input('give me a sentence!: ','s');
if strcmpi(strtrim(B));
num2str(char[B])
end
end
回答 (1 件)
dpb
2021 年 10 月 22 日
>> A='Now is the time...';
>> format short
>> disp(double(A))
78 111 119 32 105 115 32 116 104 101 32 116 105 109 101 46 46 46
>> char(double(A))
ans =
'Now is the time...'
>>
The converse of char() is simply one of the numeric classes; by default everything numeric in MATLAB is double so I used it. Could just as well have used
>> int8(A)
ans =
1×18 int8 row vector
78 111 119 32 105 115 32 116 104 101 32 116 105 109 101 46 46 46
>>
4 件のコメント
Alex Skantz
2021 年 10 月 22 日
編集済み: dpb
2021 年 10 月 22 日
You'll need to save the input from the user as a cellstr array or string array as it is being entered and then loop over however many elements there are after the input loop is finished to get the input/output in that order.
NB: you definitely don't need the format statement everywhere; I just had it because for what I am doing locally, I'm using the bank format which would display two decimals that I didn't want to clutter up the post.
A=[];
while true
s = input('give me a sentence!: ','s'); %asks user for sentence input
if strcmpi(strtrim(s), 'end');
break;
end %will end the loop if end is typed
A=[A;string(s)];
end
for i=1:snumel(A)
disp(double(A{i})
end
may be close.
NB: AIR CODE! UNTESTED!
Alex Skantz
2021 年 10 月 23 日
dpb
2021 年 10 月 23 日
As noted, UNTESTED code...I had never tried double on a string; I presumed it would behave as expected; turns out it doesn't. A string variable is higher abstraction and contains a cellstr() underneath, but to convert to underlying numeric turns out you have to explicitly address that content -- "Use the curlies, Luke!"
disp(double(A{i})
カテゴリ
ヘルプ センター および 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!