0

以下のコーディングは、熱モデルから切り離された連続方程式を解くことです。そのコーディングに基づいて氷の厚さの3Dプロットを作成する必要があります h_t=B+(D h_x)_x D=Gam |h_x|^(n-1) h^(n +2)

n=3;
L=750000; % meters
dtyear=10;
Nx=30;
type=1;
Mt=ceil(25000/dtyear);
dx=(2*L)/Nx; x=-L:dx:L; % x grid
xmid=-L+dx/2:dx:L-dx/2; % midpt grid
xplot=linspace(-L,L,400); % for plotting analytical soln
iceconstants; %Gam=2*(rho*g)^n*A;
% constants related to grid
dt=dtyear*SperA;
R0=dt/(dx*dx); % presumed related to stability for continuity eqn
Tend=dt*Mt; % final time
t=0:dt:Tend;
% use either steady state analytical soln or zero as initial condition
ic=hexact;
%ic=zeros(1,Nx+1);
% allocate space for solutions
hh=zeros(Nx+1,Mt+1); % hh(j,l) with j for x and l for t
D=zeros(Nx+1,1); %column vector
hh(:,1)=ic'; %insert initial condition
%enforce boundary conditions at start
hh(1,:)=0; hh(Nx+1,:)=0;
D(1)=0; D(Nx+1)=0; % see steady bdry

for l=1:Mt
delh=(hh(2:Nx+1,l)-hh(1:Nx,l))/dx; % Nx by 1 column vector
hav=(hh(2:Nx+1,l)+hh(1:Nx,l))/2; % Nx by 1 col vect
Dmid=(Gam/(n+2))*hav.^(n+2).*abs(delh).^(n-1); % Nx by 1 col vect
F=Dmid.*(hh(2:Nx+1,l)-hh(1:Nx,l));
hh(2:Nx,l+1)=hh(2:Nx,l)+B*dt+R0*(F(2:Nx)-F(1:Nx-1));
end;

tplot=t(tt);
hplot=hh(:,tt);
subplot(3,1,3), mesh(tplot/SperA,x/1000,hplot), view(37.5,30); <--problem in this line

このコーディングを実行すると、この結果が得られます

the result shows like this : 

??? Error using ==> mesh at 80
Data dimensions must agree.

Error in ==> iceA at 144
subplot(3,1,3), mesh(tplot/SperA,x/1000,hplot), view(37.5,30);

「データ次元が一致しなければならない」とはどういう意味ですか?? あなたが私を助けることができれば、私は本当に感謝しています:

4

1 に答える 1

0

エラーは、、が同じ次元である必要があることを意味します。つまり、3つすべての出力が同じtplotである必要があります。xhplotsize()

それらが互いに独立して生成される場合、つまり、行列のサブサンプリングまたはインデックス作成の場合は、メッシュの値のサイズと同じサイズのグリッドポイントを持つように注意してください。

以下のように関数を分析的に形成する場合、MATLABは、サイズが異なる場合Xにエラーをスローします。Yそうでない場合は、グリッドポイント行列およびとZ同じ出力サイズになります。XY

[X,Y] = meshgrid(-5:1:5);
Z = X.^2 + Y.^2;
mesh(X,Y,Z);
于 2013-03-16T04:36:59.667 に答える