声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2377|回复: 9

[编程技巧] 帮忙看下这个矩阵应该如何写代码

[复制链接]
发表于 2008-9-26 11:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
遇到一个矩阵定义的问题:
矩阵S是m*(2n*m)维的,想用分块矩阵的方法定义,每块都是一个(1*2n)的向量,请问这种矩阵如何定义最合适呢?谢谢啦!
QQ截图未命名.jpg
回复
分享到:

使用道具 举报

发表于 2008-9-26 14:39 | 显示全部楼层
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 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2008-9-26 14:57 | 显示全部楼层
m=2;
n=4;
syms t
Cs=[];
Cs1=[];
Cs2=[];
for i=1:n
    Cs1=[Cs1 cos((i-1)*t)];
    Cs2=[Cs2 sin(i*t)];
end
Cs=[Cs1 Cs2];

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 编辑 ]

评分

1

查看全部评分

发表于 2008-9-27 10:24 | 显示全部楼层

回复 板凳 octopussheng 的帖子

今天试了下,其实没这么麻烦
  1. m=3;n=5;
  2. syms t S;
  3. i=1:n;
  4. C=[cos(i-1)*t sin(i*t)]
  5. for k=1:m
  6.     S(k,(1+(k-1)*2*n):(k*2*n))=C;
  7. end
复制代码

最后一个循环如果要去掉估计也可以,不过要费些功夫。如果想到再发

[ 本帖最后由 花如月 于 2008-9-27 10:25 编辑 ]

评分

1

查看全部评分

发表于 2008-9-27 14:20 | 显示全部楼层

回复 地板 花如月 的帖子

最后的循环可以用kronecker积实现,改写之后的代码如下

  1. m=3;n=5;
  2. syms t S;
  3. i=1:n;
  4. C=[cos(i-1)*t sin(i*t)];

  5. S=kron(eye(m),C);
复制代码

[ 本帖最后由 sogooda 于 2008-9-27 14:23 编辑 ]

评分

2

查看全部评分

 楼主| 发表于 2008-9-27 14:32 | 显示全部楼层
呵呵,看来好办法真是不少呀!呵呵,谢谢啦!又多学到一招!
发表于 2008-9-27 14:36 | 显示全部楼层

回复 5楼 sogooda 的帖子

学习了,那个什么基还是第一次听说:handshake

经过用用tic和toc命令的测试,执行时间还是用for循环略占优势

初步分析应该是因为循环次数不大,多了估计用kron优势就明显了

[ 本帖最后由 花如月 于 2008-9-27 14:38 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2008-9-27 14:53 | 显示全部楼层
呵呵,现在计算时间看来问题是不大的!sogooda给出的方法非常不错,再次赞一个!呵呵!
发表于 2008-9-28 09:01 | 显示全部楼层

回复 7楼 花如月 的帖子

恩,貌似6.5之后,matlab的循环也没有以前那么低效率了,所以通常也不必特别在意了,更何况很多时候循环写出来的程序更容易读懂。
发表于 2008-9-28 09:05 | 显示全部楼层

回复 8楼 octopussheng 的帖子

呵呵,其实也不用客气,碰巧以前看到过别人用,又翻了翻帮助就恰好解决了这个问题。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-25 14:25 , Processed in 0.095574 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表