2

これが私のコードです:

N=100;
n=50;
tau=0.001;
h=0.01;
lambda=tau/h;
mu=lambda/2;
u=zeros(N,n);
u1=zeros(N,n);
u2=zeros(N,n);
phi=zeros(n,1);
for i=1:n
    for j=1:N
        u(j,i)=cos(2*pi*i*(j-1)*h);
        u1(j,i)=cos(2*pi*i*((j-1)*h-tau));
    end

    for j=2:N
        u2(j,i)=u(j,i)-lambda*(u(j,i)-u(j-1,i));
    end
u2(1)=0;
phi(i,1)=2*pi*i/N;    
end
uf=zeros(n,1);
uf1=zeros(n,1);
uf2=zeros(n,1);

for i=1:n
   for j=1:N
       uf(i,1)=uf(i,1)+(u(j,i)*exp(-1i*(j-1)*phi(i,1)))/100;
       uf1(i,1)=uf1(i,1)+u1(j,i)*exp(-1i*j*phi(i,1))/100;
       uf2(i,1)=uf2(i,1)+(u2(j,i)*exp(-1i*(j-1)*phi(i,1)))/100;
   end
end
final=zeros(n,1);
for i=1:n
    final(i,1)=-(h/(1i*tau))*(log(uf2(i)/uf(i)));
end


figure;
hold on 
z=1:1:n;
b = real(final(z,1));
%plot(phi(z,1),b,'o');
c = imag(final(z,1));
%plot(phi(z,1),c,'-');
%plot(phi(z,1),0,'-');
plot(phi(z,1),b,'ro',phi(z,1),c,'ko',phi(z,1),0,'k-');
legend('Real','Imaginary');
legend ('Location','NorthWest');
xlabel('Reduced Wavenumber')
ylabel('Modified Wavenumber')

参照用に y=0 に線をプロットしています。私はそれらを伝説にしたくありません。しかし、私はこの数字を取得しています: ここに画像の説明を入力 どうすればこれを解決できますか?

4

2 に答える 2

3

matlab の凡例は、このように呼び出す必要があります

plot(phi(z,1),b,'ro',phi(z,1),c,'ko',phi(z,1),0,'k-');
legend( {'Real','Imaginary'} , 'Location', 'NorthWest');

凡例のラベルは文字列のセル配列に格納されます{...}Location凡例の呼び出し (上記のコードのように) または関数を使用してset関数の外に配置するパラメーターです。

h = legend({'Real','Imaginary'});
set(h, 'Location','NorthWest');

これは与える

ここに画像の説明を入力

于 2013-09-19T13:53:50.943 に答える