2017-02-12 71 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