2017-02-12 5 views
0
close all; clc; clear all; 
A0 = 1.5; % meters 
lambda = 100 % meters 
k = (2*pi)/lambda; 
T = 3600 % Period in seconds 
ome = 2*pi/T; % omega 
x = 0; z = 0; 
t = linspace(0,7200,100); % 2 periods, 100 data 
zz=0; 
for z = 0:20:20; 
    zz = zz+1; 
    % multiplied by 100, unit in cm/s 
    u= 100.*ome*A0*exp(-k*z)*sin(k*x - ome*t); 
    w = 100.*-ome*A0*exp(-k*z)*cos(k*x - ome*t); 
    uu(zz,:) = u; % size(uu) 2 100 
    ww(zz,:) = w; % size(ww) 2 100 
end 

figure(1) 
color = -0.8; 
for zz = 1:2 
    color = color + 0.8; 
    for i=1:3:49; % plot circle for one period 
     plot([uu(zz,i) uu(zz,i+3)],[ww(zz,i) ww(zz,i+3)], 'color',([color+0.2 0 0]), 'linewidth', 2) 
     hold on 
    end 
end 
title('Plot of lines from (0,0) to (u(i), v(i). Radius or amplitude in cm/s') 
axis equal; 
grid on; 
legend('radius at surface','radius at depth 20')% 

이 스크립트는 2 개의 원을 그립니다. 작은 것은 빨간색이고 다른 하나는 검은 색입니다. 그러나 전설은이 원들과 일치하지 않습니다.MATLAB 범례는 2 개의 원을 그릴 때 작동하지 않습니다.

+0

이있다 이 라인 오브젝트 – bla

답변

1

축에 많은 라인 객체를 만들고 (각 루프 반복시 plot 일 때) 범례 함수가 이러한 라인 객체를 처리하기 때문입니다. sp line1과 line2는 여전히 그리는 다각형의 일부입니다.

나는 귀하의 질문에 답할 것이지만, 귀하의 코드는 차선책이며 2 개의 원이나 다각형을 그릴 수있는 최선의 방법이 아니라는 것을 알고 있습니다.

그래서 당신의 코드에 최소한의 변화 이것은 당신이 무엇을 할 수 있습니다 : 당신이 많은 라인이 축 (각 루프 반복)과 전설 함수 주소에서 개체를 만들 수 있기 때문에

.... 
figure(1) 
color = -0.8; 
for zz = 1:2 
    color = color + 0.8; 
    for i=1:3:49; % plot circle for one period 
     h(zz)=plot([uu(zz,i) uu(zz,i+3)],[ww(zz,i) ww(zz,i+3)], 'color',([color+0.2 0 0]), 'linewidth', 2) 
     hold on 
    end 
end 
title('Plot of lines from (0,0) to (u(i), v(i). Radius or amplitude in cm/s') 
axis equal; 
grid on; 
legend([h(1) h(2)],{'radius at surface','radius at depth 20'}); 

enter image description here

+0

완벽하게 작동합니다. 고마워요. – User1961