Asked by Akhmad Muktaf
on 16 Jul 2019

I have a coding like this:

Zx= zeros(size(X));

Zy=zeros(size(Y));

for i=1:length(X);

if Zx(i)<2.5 && Zx(i)>-2.5 && Zy(i)<2.5 && Zy(i)>-2.5

Zx(i) = (X(i) - Mean_X)/Std_X;

Zy(i) = (Y(i) - Mean_Y)/Std_Y;

else

Zx(i) && Zy(i) == 0

end

end

rowsToDelete = (Zx < -2.5 | Zx > 2.5) & (Zy <= -2.5 & Zy >= 2.5);

Xscore(rowsToDelete) = []; % Set to null.

Yscore(rowsToDelete) = []; % Set to null.

OutZscore=[X Y Zx Zy];

I also attach my data, two first coloumn is X and Y and two second column is Zx and Zy. X and Zx is a partner and Y and Zy is partner to in the same row.

I want to delete my X dan Y data with the requirement is X data wil be deleted is the requirement will explain such as (Zx<-2.5 and Zx>2.5) and (Zy<-2.5 and Zy>2.5).

The result is not satified.

I want to plot the data to compare the process before and after deleted.

Is there any one can help me I would be appreciate.

Thx

Answer by Star Strider
on 16 Jul 2019

Accepted Answer

Try this:

D = load('Xsample_data.txt');

X = D(:,1);

Y = D(:,2);

Zx = D(:,3);

Zy = D(:,4);

Lvx = (Zx < -2.5) & (Zx > 2.5);

Lvy = (Zy < -2.5) & (Zy > 2.5);

RowsToDelete = Lvx & Lvy;

figure

plot(X, Y)

hold on

plot(Zx, Zy)

hold off

grid

figure

plot(X(~RowsToDelete), Y(~RowsToDelete))

hold on

plot(Zx(~RowsToDelete), Zy(~RowsToDelete))

hold off

grid

Akhmad Muktaf
on 16 Jul 2019

Dear Star Rider

I just want plot the data of X and Y and also the data X(after delete) and Y (after delete). I will delete both X, Y and Zx and Zy when fullfill the requirement in the same row offcourse. My point is actually to delete the data X and Y when Zx for X is beloow -2.5 and upper 2.5 as well Zy is bellow -2.5 and upper 2.5. Maybe I have mistake to define the null.

Star Strider
on 16 Jul 2019

Try this:

Lvx = (Zx < -2.5) | (Zx > 2.5);

Lvy = (Zy < -2.5) | (Zy > 2.5);

RowsToDelete = Lvx & Lvy;

figure

plot(X, Y, '-pb')

hold on

plot(X(~RowsToDelete), Y(~RowsToDelete), '-pr')

hold off

grid

Experiment with the plot to get the result you want.

Star Strider
on 16 Jul 2019

‘How about the value of Zx and Zy is above 3 maybe in other case. It should be also deleted.’

Set the upper limit to 3:

Lvx = (Zx < -2.5) | (Zx > 2.5);

Lvy = (Zy < -2.5) | (Zy > 2.5);

That will change the upper limit, so that only values >3 (and <-2.5) will be deleted. All values >3 will already be deleted with the current threshold of >2.5.

Sign in to comment.

Answer by Akhmad Muktaf
on 16 Jul 2019

Dear Star Rider and Joel Handy.

I tried to combine your suggestion and the coding is like this:

D = load('Xsample_data.txt');

X = D(:,1);

Y = D(:,2);

Zx = D(:,3);

Zy = D(:,4);

Mean_X = mean(X)

Std_X = std(X)

Mean_Y = mean(Y)

Std_Y = std(Y)

Zx= zeros(size(X));

Zy=zeros(size(Y));

for i=1:length(X);

if Zx(i)<2.5 && Zx(i)>-2.5 && Zy(i)<2.5 && Zy(i)>-2.5

Zx(i) = (X(i) - Mean_X)/Std_X;

Zy(i) = (Y(i) - Mean_Y)/Std_Y;

else

Zx(i) && Zy(i) == 0

end

end

rowsToKeep = abs(Zx > -2.5 | Zx < 2.5) & (Zy > -2.5 & Zy < 2.5);

OutZScore = [X(rowsToKeep) Y(rowsToKeep) Zx(rowsToKeep) Zy(rowsToKeep)];

X1=X(rowsToKeep);

Y1=Y(rowsToKeep);

figure

plot(X, Y,'b.')

hold on

plot(X1,Y1,'r.')

hold off

grid

If your any comment for my coding?

Akhmad Muktaf
on 16 Jul 2019

rowsToKeep = abs(Zx) <= 2.5 & abs(Zy) <= 2.5;

How about the value of Zx and Zy is above 3 maybe in other case. It should be also deleted.

Joel Handy
on 16 Jul 2019

There is a bit of a language barrier so I'm not entirely sure what your question is. The statement you have highlighted will be true when -2.5 <= Zx <=2.5 AND -2.5 <= Zy <=2.5 and rowsToKeep with be the same size as Zx and Zy. You can craft a similar logical statement with whatever conditions you would like. If you would rather the upper limit be 3, the statment woul look like this:

rowsToKeep = (Zx >= -2.5 & Zx <= 3) & (Zy >= -2.5 & Zy <= 3)

I'm using logical indexing in my answer. That is one topic to research for more information.

Joel Handy
on 16 Jul 2019

I'm not away of any private comunication option

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 5 Comments

## Jan (view profile)

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/471940-delete-data-with-some-requirements#comment_724981

## Akhmad Muktaf (view profile)

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/471940-delete-data-with-some-requirements#comment_724983

## Joel Handy (view profile)

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/471940-delete-data-with-some-requirements#comment_724990

## Akhmad Muktaf (view profile)

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/471940-delete-data-with-some-requirements#comment_725004

## Joel Handy (view profile)

## Direct link to this comment

https://uk.mathworks.com/matlabcentral/answers/471940-delete-data-with-some-requirements#comment_725012

Sign in to comment.