# Conditional if statement solution

1 view (last 30 days)
Tino on 15 Aug 2019
Answered: Rik on 15 Aug 2019
I will greatly appreciate it if any one assist me in solving this problem in Matlab code
For instance I have a list of values = 3 4 6 3 4 5 10 7 4 5 3 4
The code contains two if statement
if values > 9
in this case it is in position 7 : display the positions in values that meet condition ( if value > 9) in the example above it is the 7th position (10)
then calculate the 5 numbers before and after including position 7th (10) itself an example
average = (4 + 5 + 10 + 7 + 4 )/5 = 6
if (average > 9)
true changes showing ( 7th position = 10 )
else
false changes (7th position = 10 )
end if statement
end if statement
The answer is false change detection
I will like to be assisted with the code as I want to apply these to large data
Thanks in advance
##### 4 CommentsShowHide 3 older comments
Tino on 15 Aug 2019
Yes Geoff with a discription if they are true changes or false changes

Sign in to comment.

### Accepted Answer

Rik on 15 Aug 2019
In Matlab calculating parameters for the entire array at once is almost always faster than a loop. My code below uses the find function (as Geoff hinted at), and it uses a convolution to find the moving average for each position. You should check if this matches your requirements for the edge cases. If you want to display the results in a different way, you should be able to add code that suits your need.
values =[3 4 6 3 4 5 10 7 4 5 3 4];
window=ones(1,5)/5;
avg=conv(values,window,'same');
true_changes=find( values>9 & avg>9 );
false_changes=find( values>9 & avg<=9 );
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Categories

Find more on Startup and Shutdown in Help Center and File Exchange

R2018a

### Community Treasure Hunt

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

Start Hunting!

Translated by