필터 지우기
필터 지우기

does an "if does not contain operator" exist

조회 수: 119 (최근 30일)
steve guy
steve guy 2013년 3월 16일
I am trying to write a function where the input must be entered in radians. My idea was to make the function return if the input does not contain "pi". Is there a way to do this?
ex. if you wanted to enter 90 you have to enter pi/2
Thanks
  댓글 수: 2
Azzi Abdelmalek
Azzi Abdelmalek 2013년 3월 16일
It's not clear for me
steve guy
steve guy 2013년 3월 16일
I edited it. hope it is more clear now

댓글을 달려면 로그인하십시오.

채택된 답변

Jan
Jan 2013년 3월 16일
편집: Jan 2013년 3월 17일
Trust the users of your program:
d = input('Input angle in radians [0 <= x <= 2*pi]: ')
Then even "pi/2" is a valid answer.
Testing the input to contain the string 'pi' would be not sufficient: E.g. the string '32 pineappletrees' should not be accepted, but '3.14159265358979 / 2' should.
  댓글 수: 3
Image Analyst
Image Analyst 2013년 3월 17일
Of course. Why wouldn't it be allowed?
Jan
Jan 2013년 3월 18일
@Steve: Yes, of course. You can call input() within a function also. But I'd prefer inputdlg.

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Matt Kindig
Matt Kindig 2013년 3월 16일
The "if does not contain" operation can be done with ismember, using something like:
notPi = ~ismember( user_input, pi)
However, due to numerical precision, you probably want to use a tolerance to determine how close the user is to pi, e.g.
notPi = abs(user_input-pi) > 1e-7

Azzi Abdelmalek
Azzi Abdelmalek 2013년 3월 16일
If the input does not contain pi does not mean that the input is not in radian.
Now if you want the input to contain pi
s=[]
while isempty(s)
u=input('Enter value (like 2*pi)','s')
s=strfind(u,'pi')
end
u=str2num(u)

Image Analyst
Image Analyst 2013년 3월 16일
편집: Image Analyst 2013년 3월 16일
Every number contains pi - some factor times it. So what you want is to have the user enter a string and see if "pi" is in the string and alert them if it's not in the string. Try this:
% Ask user to enter some string containing pi.
% Keep asking until they do.
defaultValue = 42;
titleBar = 'Enter a value';
userPrompt = 'Enter the value containing pi:';
while true
% Ask user for a number containing pi.
caUserInput = inputdlg(userPrompt, titleBar, 1, {num2str(defaultValue)});
if isempty(caUserInput),break,end; % Bail out if they clicked Cancel.
% Convert to lower case, then see if "pi" is in there.
userString = char(lower(caUserInput{1}));
piLocation = strfind(userString, 'pi');
if piLocation >= 1
% String contains pi so we can exit the loop now.
break;
end
end
  댓글 수: 1
Greg Heath
Greg Heath 2013년 3월 18일
Why not change the input to a normalized angle in [ 0 1) translated as radianangle/2/pi?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by