Repeat coordinates (arranged on the same y and different x) over different values of y

2 views (last 30 days)
Hi! I need to achieve this by knowing the 'green' coordinates ("row_c") and the repeat intervals ("val"):
I tried this way but I can only generate the first (red) line:
load val.mat
load row_c.mat
r_add = {};
for k = 1:width(val)
y_new = row_c(1,2) - val(1,k);
r = height(row_c);
repetition = repmat(y_new,r,1);
r_new = row_c;
r_new(:,2) = repetition;
r_add = [r_add;{r_new}];
end
r_add_mat = cell2mat(r_add);
figure
plot(row_c(:,1),row_c(:,2),'g.','Markersize',15);
hold on
plot(r_new(:,1),r_new(:,2),'r.','Markersize',15);
% plot(r_add_mat(:,1),r_add_mat(:,2),'m.','Markersize',10);
hold off
axis equal
set(gca, 'YDir','reverse')
EDIT: add files

Accepted Answer

Voss
Voss on 28 Oct 2023
Edited: Voss on 28 Oct 2023
load row_c
load val
I think this is what you're going for:
r_add = [];
r = height(row_c);
r_new = row_c;
for k = 1:numel(val)
r_new(:,2) = repmat(r_new(1,2)-val(1,k), r, 1);
r_add = [r_add; r_new];
end
figure
plot(row_c(:,1),row_c(:,2),'g.','Markersize',15);
hold on
plot(r_add(:,1),r_add(:,2),'r.','Markersize',15);
hold off
axis equal
set(gca, 'YDir','reverse')
xlim([-90 -85])
ylim([104 108])
An alternative is:
[x,y] = meshgrid(row_c(:,1), row_c(1,2)-[0 cumsum(val)]);
figure
plot(x(1,:),y(1,:),'g.','Markersize',15);
hold on
plot(reshape(x(2:end,:),[],1),reshape(y(2:end,:),[],1),'r.','Markersize',15);
hold off
axis equal
set(gca, 'YDir','reverse')
xlim([-90 -85])
ylim([104 108])

More Answers (1)

Matt J
Matt J on 28 Oct 2023
Edited: Matt J on 28 Oct 2023
load row_c ; load val
x=row_c(:,1);
y0=row_c(1,2);
%%% Engine
[X,Y]=ndgrid(x, flip(y0-cumsum(val)));
scatter(X(:),Y(:),'r','filled'); hold on
scatter(X(:,end), Y(:,end),'g','filled'); hold off
set(gca, 'YDir','reverse'); axis padded
  4 Comments

Sign in to comment.

Categories

Find more on Spline Postprocessing in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!