2012-03-03 5 views
4

N 노드와 M 가장자리가있는 플롯을 그립니다. 노드 A에서 노드 B까지 그리고 노드 B에서 A까지의 모서리가있을 수 있으므로 두 선을 그릴 때 직선을 사용할 수 없습니다. 어떻게 다른 하나와 구별 할 수 있도록 곡선 중 하나를 곡선으로 만들 수 있습니까? 여기서 j와 k 사이에 직선을 그리는 코드가 있습니다.Matlab에서 곡선 그리는 방법

line([Xloc(j) Xloc(k)], [Yloc(j) Yloc(k)], 'LineStyle', '-');

답변

8

그릴 중간 점을 정의해야합니다.

그런 다음 수동으로 정의하거나 스플라인 보간을 살펴볼 수 있습니다.

스플라인 보간을 사용하면 전체 커브를 결정하기 위해 중간 점이 하나만 필요합니다.

MATLAB에서 spline2d 데모를 찾을 수 있습니다. 여기의 요지이다

% end points 
X = [0 1]; 
Y = [0 0]; 
% intermediate point (you have to choose your own) 
Xi = mean(X); 
Yi = mean(Y) + 0.25; 

Xa = [X(1) Xi X(2)]; 
Ya = [Y(1) Yi Y(2)]; 

t = 1:numel(Xa); 
ts = linspace(min(t),max(t),numel(Xa)*10); % has to be a fine grid 
xx = spline(t,Xa,ts); 
yy = spline(t,Ya,ts); 

plot(xx,yy); hold on; % curve 
plot(X,Y,'or')  % end points 
plot(Xi,Yi,'xr')  % intermediate point 

Resulting plot

splined2, 그것은 점들의 더 큰 세트의 사용이되지만 중간 점없이. 포인트를 매끄럽게 연결하기 만하면, 보람을 느낄 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. – Sara

-1

오히려 오프셋, 또는 다른 하나는 곡선 만들기보다, 당신은 다른 방향에 대해 서로 다른 linestyle의를 사용할 수 있습니다

행 1 : plot(..., 'Linestyle', '-', 'Linewidth', 1)

행 2 : plot(..., 'Linestyle', '.-', 'Linewidth', 3)

이렇게하면 공간에서 임의의 이동을 요구하지 않고도 서로 다른 방향으로 라인을 구별 할 수 있습니다.

3

This function 파일 교환에서 정확히 필요한 것 같습니다. 저자의 설명에서 :

감독 (단방향) 가장자리는 곡률이 반 시계 방향으로 굴곡 점

당신이 그것을해야 추가 기능 또는 미 조정이 필요하면 멀리 이동과 곡선 된 점선을 그려 코드를 사용자의 필요에 맞게 간단하게 변경할 수 있습니다.

+0

아 그 덕분에 도움이됩니다! – Sara

관련 문제