Problem introducing user input into an array
이전 댓글 표시
Hey guys, im new to matlab and i have a problem. I have to create a simulator of an RZ signal coding.
I have made the part where the user adds the 1´s and 0´s but when i want to creat a array to assing values to the 1´s and 0´s i just dont ge it why its not working
heres the code
% ask the user
bny = input('Insira o codigo a codificar: ' ,'s');
% Verifyif only 0´s and 1´s
inv_c=regexp(bny,'[a-z_A-Z2-9]');
if(~isempty(inv_c))
disp(['O seu código não é válido: ' bny(inv_c) ' Valores não validos= ' num2str(inv_c)])
else
% its valid
disp(['your code is : ', bny ])
end
for i = 1 : length(bny)
if bny(i) == 1
n(i)=3;
else
n(i)=-3;
end
end
댓글 수: 2
Walter Roberson
2019년 1월 9일
Note: I recommend you change
inv_c=regexp(bny,'[a-z_A-Z2-9]');
to
inv_c = regexp(bny, '[^01]');
for example ';' is not one of the characters you listed and so your checking would permit through ';'.
António Pereira
2019년 1월 9일
채택된 답변
추가 답변 (1개)
Walter Roberson
2019년 1월 9일
You are reading in characters. You have
if bny(i) == 1
but this is comparing the character in bny(i) to the number 1. The character is '0' or '1' which are not numeric 0 or 1 -- they are numeric 48 and 49.
You can vectorize your code.
n = 3 * ((bny - '0') * 2 - 1)
or somewhat more obscurely,
n = bny * 6 - 291;
댓글 수: 3
António Pereira
2019년 1월 9일
Walter Roberson
2019년 1월 9일
bny is '0' or '1'. When you subtract '0' then you get numeric 0 or 1. Multiply by 2 to get numeric 0 or 2. Subtract one from that to get numeric -1 or +1 . Multiply by 3 to get -3 or +3.
The second form with the 291 is an optimization of the first one. '0' is equal to 48 and 291 is 48*6 - 3 -- i.e., (6 * bny - 6 * '0' - 3) which is the result of expanding 3 * ((bny - '0') * 2 - 1)
António Pereira
2019년 1월 10일
카테고리
도움말 센터 및 File Exchange에서 Mathematics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!