Repeat coordinates (arranged on the same y and different x) over different values of y
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi! I need to achieve this by knowing the 'green' coordinates ("row_c") and the repeat intervals ("val"):
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1523706/image.png)
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
댓글 수: 0
채택된 답변
Voss
2023년 10월 28일
편집: Voss
2023년 10월 28일
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])
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Spline Postprocessing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!