How to populate a new vector by extracting only certain elements from another vector?

Hi everyone!
I would like to obtain two vectors new_vrx (with size 2xn) and new_vry (with size 2xn).
I would like to keep only those segments for which both the starting and ending point coordinates have values Vq1 = 0 and Vq2 = 0.
Vq1 = interp2(Xpix,Ypix,double(M),vrx(1,:),vry(1,:));
Vq2 = interp2(Xpix,Ypix,double(M),vrx(2,:),vry(2,:));
Could you help me? Thanks in advance

 Accepted Answer

Hi Loren,
if understood your question correctly, this should do what you want:
load('reticolo2D.mat');
[Xpix, Ypix] = meshgrid(1:321,1:241);
Vq1 = interp2(Xpix,Ypix,double(M),vrx(1,:),vry(1,:));
Vq2 = interp2(Xpix,Ypix,double(M),vrx(2,:),vry(2,:));
new_vrx = vrx(1,Vq1==0);
new_vry = vry(1,Vq1==0);
figure;plot(new_vrx,new_vry,'b-')
and
new_vrx = vrx(2,Vq2==0);
new_vry = vry(2,Vq2==0);
figure;plot(new_vrx,new_vry,'b-')
Best, Konrad

3 Comments

@Konrad thanks but it doesn't answer my question. In the end I have to get just one plot, not two ones and I need a correspondence between new_vrx = vrx(1,Vq1==0) and new_vrx = vrx(2,Vq2==0); because they represent the x-coordinate of the initial and final point of the same segment. So if the x coordinate of the starting point exists, but the final one doesn't, I have to remove the whole segment anyway.
I don't understand what your data represents, but how about this:
load('reticolo2D.mat');
[Xpix, Ypix] = meshgrid(1:321,1:241);
Vq1 = interp2(Xpix,Ypix,double(M),vrx(1,:),vry(1,:));
Vq2 = interp2(Xpix,Ypix,double(M),vrx(2,:),vry(2,:));
new_vrx = vrx(:,Vq1==0&Vq2==0);
new_vry = vry(:,Vq1==0&Vq2==0);
figure;plot(new_vrx,new_vry,'b-')
"it doesn't answer my question." <== Well now you've accepted the answer so people will (rightfully?) assume that you have since figured it out.

Sign in to comment.

More Answers (0)

Products

Asked:

on 15 Jun 2022

Edited:

on 15 Sep 2022

Community Treasure Hunt

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

Start Hunting!