24小时热门版块排行榜    

查看: 1061  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lijunjiexm

铁虫 (小有名气)

[求助] 求助一简单matlab程序的出错问题,谢谢

如下m文件,为什么在命令窗口运行 出现错误提示:
>> A=mesh2d2(10)
??? Index exceeds matrix dimensions.
Error in ==> mesh2d2 at 8
A = sparse (ii(keep), jj(keep), xx(keep));
>>
请大家指点,谢谢!

%%%%%%%%%%%%%%%%%%%%%%%
function A = mesh2d2 (n)
% create an n-by-n 2D mesh for the 2nd difference operator
nn = 1:n^2 ;
ii = [nn-n ; nn-1 ; nn ; nn+1 ; nn+n] ;
jj = repmat (nn, 5, 1) ;
xx = repmat ([-1 -14-1-1]',1, n^2) ;
keep = find (ii >= 1 & ii <= n^2 & jj >= 1 & jj <= n^2) ;
A = sparse (ii(keep), jj(keep), xx(keep));
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

peony1303

金虫 (初入文坛)

【答案】应助回帖

★ ★
余泽成(金币+2): 谢谢参与应助! 2011-11-26 23:43:34
把最后一行“A = sparse (ii(keep), jj(keep), xx(keep)); ”转换成
A = sparse (ii(keep));
A = sparse (jj(keep));
A = sparse (xx(keep));
再试试看。sparse函数转化只能一个个来吧。

另外,你xx = repmat ([-1 -14-1-1]',1, n^2) ;是想生成2*100个元素的矩阵,不过按照你的程序应该生成5*100矩阵吧。猜测而已。[-1 -14-1-1]应为[-1 -1 4 -1 -1]吧??
Welcomeyou,welcomeme!!
3楼2011-11-26 23:11:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

peony1303

金虫 (初入文坛)

【答案】应助回帖

★ ★
余泽成(金币+2): 谢谢参与应助! 2011-11-26 23:43:44
function A = mesh2d2 (n)
% create an n-by-n 2D mesh for the 2nd difference operator
nn = 1:n^2 ;
ii = [nn-n ; nn-1 ; nn ; nn+1 ; nn+n] ;
jj = repmat (nn, 5, 1) ;
xx = repmat ([-1 -14-1-1]',1, n^2) ;
[keep1,keep2]= find (ii >= 1 & ii <= n^2 & jj >= 1 & jj <= n^2) ;
keep=[keep1 keep2];
% A = sparse (ii(keep), jj(keep), xx(keep));
A1 = sparse (ii(keep));
A2 = sparse (jj(keep));
A3 = sparse (xx(keep));
Welcomeyou,welcomeme!!
4楼2011-11-26 23:20:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lijunjiexm 的主题更新
信息提示
请填处理意见