首發於www.dspstack.com
clc;
clear;
nx=201; nz=201; nt=400;%設定取樣點數,取樣時間點數
h=8; %x方向和z方向的步長
dt=0.001; %時間步長
c=3000; %波傳播速度為3km/s
f=20; %震源頻率
gama=3; %頻帶控制引數
a=(dt*c)^2/h^2;
u=zeros(nx,nz,nt);
for k=2:nt-1
for i=3:nx-2
for j=3:nz-2
if i==100&j==100
u(i,j,k+1)=exp(-(2*pi*f*k*dt/gama).^2).*cos(2*pi*f*k*dt);
%在(100km,100km)處設定乙個振動源
else u(i,j,k+1)=a*(u(i+1,j,k)+u(i-1,j,k)+u(i,j+1,k)+u(i,j-1,k)-4*u(i,j,k))-u(i,j,k-1)+2*u(i,j,k);
endu(3,j,k+1)=u(4,j,k+1);
endend
endfilename='二維波場快照.gif';
for k=1:4:nt
pcolor(u(:,:,k))
shading interp;
colormap('bone');
axis equal;
axis([0,200,0,200]);
set(gca,'ydir','reverse');
xlabel('x'); ylabel('z');
title('頂部為自由邊界條件,其他為透射邊界的二維聲波傳播快照');
if(k==201) keyboard; end
f=getframe(gcf); % 捕獲畫面
imind=frame2im(f);
[imind,cm] = rgb2ind(imind,256);
if k==1
imwrite(imind,cm,filename,'gif', 'loopcount',inf,'delaytime',0.05); %採用延遲時間為0.05秒寫入給定的檔案
差分矩陣 二維差分
輸入乙個n行m列的整數矩陣,再輸入q個操作,每個操作包含五個整數x1,y1,x2,y2,c,其中 x1,y1 和 x2,y2 表示乙個子矩陣的左上角座標和右下角座標。每個操作都要將選中的子矩陣中的每個元素的值加上c。請你將進行完所有操作後的矩陣輸出。輸入格式 第一行包含整數n,m,q。接下來n行,每...
差分 (2)二維差分
前面部分我們介紹了一維差分,下面我們擴充套件一下,來介紹二維差分。我們有乙個矩陣,如下圖所示。根據二維字首和表示的是右上角矩形的和,由於差分只涉及前面相鄰的數 由一維可以推出 並且由前面範圍的數相加得到這個位置的數。那麼模擬二維字首和和一維差分,可以簡單推測出二維差分的公式 如何從差分矩陣得到原矩陣...
一維差分與二維差分
自 leetcode周賽第四題需要用到二維差分,所以就找了篇文章,便於檢視b i a i a i 1 稱b陣列是a陣列的差分陣列。舉個栗子 a 0,1 2,3 4,5 b 0,1,1,1,1,1 為啥呢?a 5 a 4 b 5 a 4 a 3 b 4 a 3 a 2 b 3 a 2 a 1 b 2 ...