does an "if does not contain operator" exist

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

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일

0 개 추천

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

steve guy
steve guy 2013년 3월 17일
I have done this kind of thing with a script but can the prompt for a user-input be used within a matlab function?
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일

0 개 추천

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일

0 개 추천

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일

0 개 추천

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?

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

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

질문:

2013년 3월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by