2016-05-09 23 views
0

波動関数n=a*cos(k*x-w*t)をシミュレーションで3DでMatlabにプロットするにはどうすればよいですか?私が使用し コードはでした:波動関数の3次元プロット

k=0.05; 
f=100; 
w=2*pi*f; 
a=1; 
x=[-5:1:5]; 
t=[0:2:20]; 
n=a.*cos(k.*x-w.*t); 
surf(x,t,n); 

答えて

2

あなたはデータのメッシュを必要とする表面をプロットします。あなたが作成したx,tはただの行で、xごとにただ一つのtがありますが、表面にはすべてxに対して複数のtがあります。

あなたがxtのあなたの定義を変更した場合:

[x,t]=meshgrid(-5:1:5,0:2:20); 

あなたのコードが実行され、プロット:この例では

enter image description here

+0

は、どのように私はこのプロットにモーションを追加することができますか? –

+1

これはまったく新しい質問です@SauravAgarwal、新しいものをお尋ねください。 –

+0

@SauravAgarwalが答えを受け入れることを検討してください。 –

0

を私はポイントを追加することで、より良い解決を行っていますxおよびt。アニメーションでkの値を変更しました。たとえば、次のように変更することもできます。 f。

f=100; 
w=2*pi*f; 
a=1; 
x=linspace(-5,5,50); 
t=linspace(0,2,50); 


for k = 0.05:0.01:2   % Change values of e.g. k 
    n = a.*cos(k.*x-w.*t); % Re-calculate n 
    pause(0.02)    % pause to control animation speed 
    s = surf(x,t,repmat(n,[length(t),1])); % Use repmat to make Z 2D 
    title(['k = ',num2str(k)]) 

    % Just some nice settings for surf plot 
    shading interp 
    lighting phong 
    camlight left; camlight right; camlight left; camlight right; 
    colormap copper 
    alpha(.8) 
end 
+0

答えに感謝します。これは本当に素晴らしかったです。 –

+0

それを聞いてうれしいです。それがあなたの質問に答えるなら、私の答えの横にある投票ボタンでチェックマークをクリッキングして答えを受け入れてください:)私はそれを感謝します。 – JCKaz

関連する問題