找回密码
 注册
Simdroid-非首页
查看: 133|回复: 6

矩阵扩充赋值问题

[复制链接]
发表于 2009-11-27 09:28:48 | 显示全部楼层 |阅读模式 来自 辽宁沈阳
本帖最后由 messenger 于 2009-11-28 00:38 编辑



矩阵比较大,我只是举了个简单的例子。
依次赋值会比较麻烦。用别的什么办法(比如循环)可以很好地实现。
谢谢!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2009-11-27 14:21:20 | 显示全部楼层 来自 北京
Simdroid开发平台
本帖最后由 ljelly 于 2009-11-27 14:56 编辑

转自matlab中文论坛cwjy会员的编码,实现了该功能
大家有没有其他方法,欢迎讨论!

  1. M1=[1 2 3;2 3 4];
  2. [m,n]=size(M1);
  3. M2=zeros(m*n,n);
  4. for i=1:n;
  5. M2(2*i-1:2*i-1+m-1,i)=M1(1:m,i);
  6. end
  7. M1,M2
复制代码

M1 =
     1     2     3
     2     3     4

M2 =
     1     0     0
     2     0     0
     0     2     0
     0     3     0
     0     0     3
     0     0     4
回复 不支持

使用道具 举报

发表于 2009-11-27 14:31:39 | 显示全部楼层 来自 浙江杭州
>> a =[ 1     2     3
           4     5     6];

>> ca=num2cell(a,1);

>> blkdiag(ca{1:3})

ans =[1     0     0
         4     0     0
         0     2     0
         0     5     0
         0     0     3
         0     0     6]

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-11-27 15:14:56 | 显示全部楼层 来自 上海
>> m1=rand(2,4)

m1 =

    0.9575    0.1576    0.9572    0.8003
    0.9649    0.9706    0.4854    0.1419

>> m2=zeros(8,4)

m2 =

     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0
     0     0     0     0

>> m3=[m1;m2];
>> m2(:)=m3(1:length(m2(:)))

m2 =

    0.9575         0         0         0
    0.9649         0         0         0
         0    0.1576         0         0
         0    0.9706         0         0
         0         0    0.9572         0
         0         0    0.4854         0
         0         0         0    0.8003
         0         0         0    0.1419

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-11-27 15:19:10 | 显示全部楼层 来自 浙江杭州
4# feynmand

我也觉得这两个矩阵之间有什么联系,不过想了半天没想出来,就用上面的做法做了。
回复 不支持

使用道具 举报

发表于 2009-11-27 15:36:17 | 显示全部楼层 来自 北京
本帖最后由 ljelly 于 2009-11-27 15:41 编辑
>> m1=rand(2,4)

m1 =

    0.9575    0.1576    0.9572    0.8003
    0.9649    0.9706    0.4854    0.1419

>> m2=zeros(8,4)

m2 =

     0     0     0     0
     0     0     0     0
     0  ...
feynmand 发表于 2009-11-27 15:14

由此也这样:

  1. m2=reshape(m3,8,5)
  2. m4=m2(:,1:4)
复制代码


m4 =
    0.9575         0         0         0         
    0.9649         0         0         0         
         0    0.1576         0         0         
         0    0.9706         0         0         
         0         0    0.9572         0         
         0         0    0.4854         0         
         0         0         0    0.8003         
         0         0         0    0.1419
回复 不支持

使用道具 举报

 楼主| 发表于 2009-11-28 12:45:38 | 显示全部楼层 来自 辽宁沈阳
十分感谢各位老大!!
学到了很多东西!!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 05:28 , Processed in 0.064610 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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