If statement for a values in a string

2 views (last 30 days)
Iam a Matlab newbi, so need some help. Working on a for-loop. In the for-loop my if statement doesn't work as i wish. I want it to work like this: When the value of i= one of the numbers in the string, h, make a plot of the function f(i). So the problem is the first line in the if-statement.
h=[8 17 25 30 36 41 49 58]
for i=1:65
F(i)
if i= one of the values in the string defined above
plot F(i)
end
end
Any suggestions to fix this if-statement?

Accepted Answer

Jonathan Sullivan
Jonathan Sullivan on 31 May 2013
The variable h does appear to be a string, but rather a vector of doubles. What you want to use to determine if a scalar is equal to any element of a vector is the function ismember
Example
ismember(i,h)
Hope this helps.
  2 Comments
Andre
Andre on 31 May 2013
Edited: Andre on 31 May 2013
Thanks for replying!
Doesn't the ismember function only tell if its true or false?
I want my function to be plotted if i=one of the values in h. I don't want to know if i=one of the values i h or not.
Jan
Jan on 31 May 2013
@Andre: I do not understand the last paragraph of your comment.

Sign in to comment.

More Answers (1)

Jan
Jan on 31 May 2013
The most straight solution would be not to run the loop from 1 to 65, but:
h = [8 17 25 30 36 41 49 58]
for i = h
...
Now the loop runs through the elements of h only. If this does not matches your needs for any reasons, the suggested ismember is fine:
h = [8 17 25 30 36 41 49 58]
for i=1:65
F(i)
if ismember(i, h)
plot F(i)
end
end
This is leaner and faster:
if any(i == h)
  1 Comment
Andre
Andre on 1 Jun 2013
I understand. Thanks to both of you for helping me out:)

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!