rushuidetian 发表于 2008-6-4 22:13

矩阵的扩展以及ode45

请问:怎样调用工具箱将5*5阶矩阵扩展为25*25的矩阵,其中原5*5阶矩阵以块矩阵分布在25*25阶的主对角线上,其它元素全为零.

[ 本帖最后由 sigma665 于 2008-6-5 19:16 编辑 ]

ch_j1985 发表于 2008-6-5 06:37

原帖由 rushuidetian 于 2008-6-4 22:13 发表 http://www.chinavib.com/forum/images/common/back.gif
请问:怎样调用工具箱将5*5阶矩阵扩展为25*25的矩阵,其中原5*5阶矩阵以块矩阵分布在25*25阶的主对角线上,其它元素全为零.

是不是可以参考此帖?
http://www.chinavib.com/forum/viewthread.php?tid=64294&page=1#pid341586

sigma665 发表于 2008-6-5 09:23

a=ones(5);
b=cell(5,5);
for ii=1:5
for jj=1:5
if ii==jj
b{ii,jj}=a;
else
b{ii,jj}=(zeros(5,5));
end
end
end
c=cell2mat(b);

friendchj 发表于 2008-6-5 10:02

help blkdiag
例子
a=ones(5);
b=blkdiag(a,a,a,a,a);

wwbeyondww 发表于 2008-6-5 15:51

用kron也行;
a=diag(ones(1,5));
b=ones(5);
c=kron(a,b);

rushuidetian 发表于 2008-6-5 16:21

我在运行过程中出现以下情况,请问是什么意思?

??? Error using ==> d:/matlab/toolbox/matlab/funfun/private/odearguments
Solving ERWEIFUN requires an initial condition vector of length 1.

Error in ==> D:\matlab\toolbox\matlab\funfun\ode45.m
On line 155==> [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, args, ...

Error in ==> C:\Documents and Settings\hp\桌面\张培茹111\erweifangcheng.m
On line 78==>=ode45(@erweifun,,V0,[],M);

ch_j1985 发表于 2008-6-5 16:27

原帖由 rushuidetian 于 2008-6-5 16:21 发表 http://www.chinavib.com/forum/images/common/back.gif
我在运行过程中出现以下情况,请问是什么意思?

??? Error using ==> d:/matlab/toolbox/matlab/funfun/private/odearguments
Solving ERWEIFUN requires an initial condition vector of length 1.

Error in = ...

路径中不要有汉字(桌面\张培茹111),试试看

rushuidetian 发表于 2008-6-5 16:30

以前好多程序都是这个路径的,这个应该没有问题的.张培茹111那是个文件夹

ch_j1985 发表于 2008-6-5 16:39

原帖由 rushuidetian 于 2008-6-5 16:30 发表 http://www.chinavib.com/forum/images/common/back.gif
以前好多程序都是这个路径的,这个应该没有问题的.张培茹111那是个文件夹
LZ能否把代码贴出来?

rushuidetian 发表于 2008-6-5 17:06

与错误有关的代码如下:
% V0为初值
for m=1:2^(L+j)+2*N-1
    for k=1:2^(L+j)+2*N-1
    V0(k+(2^(L+j)+2*N-1)*(m-1),1)=sin(pi*x(m+1))*sin(pi*y(k+1));
   end
end
V0;

=ode45(@erweifun,,V0,[],M);

function f=erweifun(t,V,M)
f=M*V;
现在运行结果是erweifun里需要一个长度为一的初始向量,请问怎么回事?

sigma665 发表于 2008-6-5 17:42

function f=erweifun(t,V,M)
f=M*V;

这里面,给了t,却没有用到

rushuidetian 发表于 2008-6-5 17:52

V是关于t 的向量函数,以前我也这样用过,是正确的

sigma665 发表于 2008-6-5 19:15

根据提示
要有长度为1的初始条件
你的v0似乎没有给进去
或者,v0长度不符合要求

还是怀疑m函数没有写正确

[ 本帖最后由 sigma665 于 2008-6-5 21:10 编辑 ]
页: [1]
查看完整版本: 矩阵的扩展以及ode45