Я не очень знаком с MATLAB, и я получил следующий код:
function [grad] =laplacian(nx,ny,dx,dy)
format long;
nxny=nx*ny;
r=zeros(1,nx);
r(1:2)=[2,-1];
T=toeplitz(r);
E=speye(nx);
grad=-(kron(T,E)+kron(E,T));
%-- for periodic boundaries
for i=1:nx
ii=(i-1)*nx+1;
jj=ii+nx-1;
grad(ii,jj)=1.0;
grad(jj,ii)=1.0;
kk=nxny-nx+i;
grad(i,kk)=1.0;
grad(kk,i)=1.0;
end
grad = grad /(dx*dy);
end %endfunction
Затем, когда я использую эту функцию, как это [g]=laplacian(Nx, Ny, Dx, Dy)
.
Она показывает мнепроблема N-мерное индексирование разрешено только для полных матриц
В зависимости от проблемы, я думаю, что это переменная матриц grad
, которая вызывает проблему, но яне могу исправить ошибку правильно, поэтому я выкладываю ее здесь.
Не могли бы вы мне помочь?