# Writing to a new matrix after filtering outliers form original matrix

1 view (last 30 days)
Greg B. on 7 Mar 2016
Commented: Moe_2015 on 7 Mar 2016
Greetings. I am reading in a matrix of ~10,000 values. I want to go through each element and determine if that value is in between a certain boundary limit. Given a for loop with a nested if-statement, how do I write to a new matrix, 'newdata', other than just printing out the last value in the original matrix, 'data'? My code is below:
clc;
clear all;
close all;
data = load('data');
for i = 1:length(data)
x = data(i);
limits = 5;
if (x < limits) && (x > (limits*-1))
newdata = [x];
end
end
Thank you for the help.
##### 0 CommentsShow -2 older commentsHide -2 older comments

Sign in to comment.

### Accepted Answer

Moe_2015 on 7 Mar 2016
This should work. Basically run another index called "k" as a sum that only increases when the inequalities are satisfied.
clc;
clear all;
close all;
data = load('data');
k=0;
for i = 1:length(data)
x = data(i);
limits = 5;
if (x < limits) && (x > (limits*-1))
k=k+1;
newdata(k) = x;
end
end
##### 2 CommentsShow NoneHide None
Greg B. on 7 Mar 2016
Thank you, sir! This solution works. I am now iterating through the data matrix and with the 'k' index, I am now writing all the values that meet the inequality to the new matrix, 'newdata'. Great!
Moe_2015 on 7 Mar 2016
No problem! Glad I could help.

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!