帮忙看下这个矩阵应该如何写代码
遇到一个矩阵定义的问题:矩阵S是m*(2n*m)维的,想用分块矩阵的方法定义,每块都是一个(1*2n)的向量,请问这种矩阵如何定义最合适呢?谢谢啦! m=3,n=5;
S=zores(m,2*m*n);
C=
k=1:m
S=(k,1+(k-1)2*n:k*2n)=C;
这样应该可以,我没matlab试。:loveliness:
[ 本帖最后由 花如月 于 2008-9-26 14:41 编辑 ] m=2;
n=4;
syms t
Cs=[];
Cs1=[];
Cs2=[];
for i=1:n
Cs1=;
Cs2=;
end
Cs=;
v_zero=zeros(1,2*n);
cc=2*n*m;
S=zeros(m,cc);
S=sym(S);
para=0;
for i=1:m
for j=1:2*n
S(i,j+para)=Cs(j);
end
para=para+2*n;
end
S
[ 本帖最后由 octopussheng 于 2008-9-26 14:58 编辑 ]
回复 板凳 octopussheng 的帖子
今天试了下,其实没这么麻烦m=3;n=5;
syms t S;
i=1:n;
C=
for k=1:m
S(k,(1+(k-1)*2*n):(k*2*n))=C;
end
最后一个循环如果要去掉估计也可以,不过要费些功夫。如果想到再发
[ 本帖最后由 花如月 于 2008-9-27 10:25 编辑 ]
回复 地板 花如月 的帖子
最后的循环可以用kronecker积实现,改写之后的代码如下m=3;n=5;
syms t S;
i=1:n;
C=;
S=kron(eye(m),C);
[ 本帖最后由 sogooda 于 2008-9-27 14:23 编辑 ] 呵呵,看来好办法真是不少呀!呵呵,谢谢啦!又多学到一招!
回复 5楼 sogooda 的帖子
学习了,那个什么基还是第一次听说:handshake经过用用tic和toc命令的测试,执行时间还是用for循环略占优势
初步分析应该是因为循环次数不大,多了估计用kron优势就明显了
[ 本帖最后由 花如月 于 2008-9-27 14:38 编辑 ] 呵呵,现在计算时间看来问题是不大的!sogooda给出的方法非常不错,再次赞一个!呵呵!
回复 7楼 花如月 的帖子
恩,貌似6.5之后,matlab的循环也没有以前那么低效率了,所以通常也不必特别在意了,更何况很多时候循环写出来的程序更容易读懂。回复 8楼 octopussheng 的帖子
呵呵,其实也不用客气,碰巧以前看到过别人用,又翻了翻帮助就恰好解决了这个问题。
页:
[1]