how to prevent user from entering non-numeric values?

4 次查看(过去 30 天)
t = 0:0.0001:0.07;
v0 = input('please Enter the value for v0:');
R = input('please Enter the value for resistance:');
C = input('please Enter the value for capacitacne:');
f = input('please Enter the value for frequency:');
m = length(t);
state = 'on';
for A = 1:m
vs(A) = v0 * sin(2*pi*f*t(A));
switch state
case 'on'
vR(A) = vs(A);
iR = vR(A)/R;
iC = 2*pi*f*C*v0*cos(2*pi*f*t(A));
I = iC + iR;
if I<=0
state = 'off';
tA = t(A);
end
case 'off'
vR(A) = v0*sin(2*pi*f*tA)*exp(-(t(A)-tA)/(R * C));
if vs(A) >= vR(A)
state = 'on';
end
end
end
plot (t,vs,':',t,vR,'k')
thank you...
  6 个评论
amir
amir 2013-9-16
yes,i mean the 4 inputs...this is what i got so far .
Image Analyst
Image Analyst 2013-9-17
I noticed you editied it but didn't get it quite right. See this link : http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup. Basically you don't need to double space your code. all you need to do is to make sure there's a blank line in front of it, then highlight it and click the {}Code button.

请先登录,再进行评论。

回答(2 个)

Image Analyst
Image Analyst 2013-9-16
Hints: ischar() and isnumeric().

Jan
Jan 2013-9-16
编辑:Jan 2013-9-16
v0S = input('please Enter the value for v0:', 's');
v0 = sscanf(v0S, '%g', 1);
if isempty(v0)
error('Invalid value for v0');
end
etc.
Of course you cannot prevent, that the user provides non-numeric values, but you can catch this exception.

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by