【发布时间】:2020-11-30 20:58:34
【问题描述】:
当我运行这段代码时:
dx = 4/(nx-1);
dy = 2/(ny-1);
phinew(2:ny-1,2:nx-1) = ((dy^2*(phiold(1:ny-2,2:nx-1)+phiold(3:ny,2:nx-1))+dx^2*(phiold(2:ny-1,1:nx-2)+phiold(2:ny-1,3:nx)))/(2*(dx^2+dy^2))-poissonf);
在我的代码中,这段代码运行正常,输入nx by ny 矩阵并输出nx by ny 矩阵。但是,当我在完全相同的位置运行以下代码时:
phinew = Smoothing(phiold,poissonf,nx,ny)
函数“平滑”定义为:
function [phinew,dx,dy] = Smoothing(phiold,poissonf,nx,ny)
dx = 4/(nx-1);
dy = 2/(ny-1);
phinew(2:ny-1,2:nx-1) = ((dy^2*(phiold(1:ny-2,2:nx-1)+phiold(3:ny,2:nx-1))+dx^2*(phiold(2:ny-1,1:nx-2)+phiold(2:ny-1,3:nx)))/(2*(dx^2+dy^2))-poissonf);
end
该函数为nx by ny 输入返回一个nx-1 by ny-1 矩阵。
我完全无法理解为什么会发生这种情况。输出矩阵与应有的完全相同,除了最后一列和最后一行完全丢失。我的代码是迭代的,因此要求它们具有相同的大小,因此在解决此问题之前我无法继续。
感谢您的宝贵时间和帮助。你们是救生员。
【问题讨论】:
标签: function matlab matrix vector