2013-03-16 2 views
0

Кодирование ниже состоит в том, чтобы решить уравнение неразрывности, отделенное от модели тепла Мне нужно создать 3D-график толщины льда на основе этого кодирования h_t = B + (D h_x) _x D = Gam | h_x |^(п-1) ч^(п + 2)Функция сетки с использованием matlab

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); 

что это значит на "размеры данных должны договориться" ?? я действительно ценю это, если и может помочь мне:

+0

Это слишком специализированный и, вероятно, из-за ошибки выборки или индексации матриц/векторов. Попробуйте имитировать ошибку, с меньшим количеством/случайных выборок, чтобы понять аргументы и вызвать 'mesh'. – gevang

ответ

0

ошибки означает, что tplot, x и hplot должны иметь одинаковые размеры, то есть выход size() на все три должен быть одинаковым.

Если они сгенерированы независимо друг от друга, позаботьтесь о том же размере точек сетки к размеру значений для сетки, то есть при подвыборке или индексировании в матрицах.

При формировании функций аналитически, как показано ниже, MATLAB выдаст ошибку, если X и Y имеют разные размеры. Если нет, Z будет иметь одинаковый выходной размер, так как матрицы точек сетки X и Y.

[X,Y] = meshgrid(-5:1:5); 
Z = X.^2 + Y.^2; 
mesh(X,Y,Z); 
Смежные вопросы