This is my attempt to simulate the water surface. It works fine when I use the surf() function. But when I change it to bar3(), this error occurs: "Matrix dimensions must agree, not rendering mesh". Can some one please tell me how to fix this? Thank you. Here's my code:
n=60; i = 2:n-1; j = 2:n-1; H = ones(n,n); Dropx=30; %x and y coordinate of the droplet
Dropy=30; width=20; r=width/2; dt=0.1; dx=0.3; %%%add droplet to the surface %%%
[x,y] = ndgrid(-1.5:(2/(width/1.5-1)):1); D = 8*exp(-5*(x.^2+y.^2)); w = size(D,1); i2 = (Dropx-r):w+(Dropx-r)-1; j2 = (Dropy-r):w+(Dropy-r)-1; H(i2,j2) = H(i2,j2) + D; oldH=H; newH=H; h=surf(newH); % cannot change this to bar3
axis([1 n 1 n -2 8]); k=0.2; %damping constant
c=2; %wave speed
while 1==1 newH(i,j)=H(i,j)+(1-k*dt)*(H(i,j)-oldH(i,j))-... dt^2*c^2/dx^2*((4*H(i,j)-H(i+1,j)-H(i-1,j)-H(i,j+1)-H(i,j-1))... +0.4*(4*H(i,j)-H(i+1,j+1)-H(i+1,j-1)-H(i-1,j+1)-H(i-1,j-1))); set(h,'Zdata', newH(i,j)); oldH=H; H=newH; pause(0.05); end
Best Answer