数学建模社区-数学中国

标题: matlab中构建矩阵的问题,求大神 [打印本页]

作者: 青枫浦上本    时间: 2013-8-21 18:46
标题: matlab中构建矩阵的问题,求大神
   [1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
    0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
    0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
    0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0
    0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0
    0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1]

像这种类型的矩阵。。它有规律但是不是对角矩阵什么的。。如果矩阵数据庞大了的话,该怎么写出来?或者用excel之类的文件来写?
彩笔不懂啊。。。求帮忙~

作者: gt93    时间: 2013-8-21 18:56
a=xlsread(‘你的当前目录下的文件名’)可以直接将excel中数据导入数组a中。
作者: 青枫浦上本    时间: 2013-8-21 21:29
gt93 发表于 2013-8-21 18:56
a=xlsread(‘你的当前目录下的文件名’)可以直接将excel中数据导入数组a中。

谢谢啦~我待会就试试,如果有问题再来请教哈~
作者: 青枫浦上本    时间: 2013-8-21 21:57
gt93 发表于 2013-8-21 18:56
a=xlsread(‘你的当前目录下的文件名’)可以直接将excel中数据导入数组a中。

我刚试了下,但是主要是excel不知道怎么弄那个矩阵,因为我要解决的问题中给的数据太多   要我们自己有选择性的选出一些数据把它整合成上面那个那种规律的矩阵的    就算能读出Excel也没办法。。。。。现在想求救的就是如何能在matlab中列出包含这样规律的有一百多行和列的矩阵,而不需要手动输入,手输实在麻烦啊~
作者: 小屁    时间: 2013-8-21 23:57
像上面那个你可以先生成对角阵,然后再合并矩阵就可以了吧,就拿你给的例子,首先生成6*6的单位矩阵若干个比如记作a = eye(6);,然后再合并生成你的那个例子A = [a a a a];,如果想生成24*6的就是B = [a; a;a;a] ;就搞定了,不知道有没有用
作者: 青枫浦上本    时间: 2013-8-22 15:59
小屁 发表于 2013-8-21 23:57
像上面那个你可以先生成对角阵,然后再合并矩阵就可以了吧,就拿你给的例子,首先生成6*6的单位矩阵若干个比 ...

超级感谢~~~~~~~我知道怎么做了~
作者: 小屁    时间: 2013-8-22 23:04
青枫浦上本 发表于 2013-8-22 15:59
超级感谢~~~~~~~我知道怎么做了~

不谢,能帮助别人很开心啊
作者: kong1234    时间: 2013-8-23 10:08
恩 矩阵构建 [a,b] 和 [a;b]是很好的办法
作者: 青枫浦上本    时间: 2013-8-23 20:48
小屁 发表于 2013-8-22 23:04
不谢,能帮助别人很开心啊

哈哈
作者: 青枫浦上本    时间: 2013-8-23 20:49
kong1234 发表于 2013-8-23 10:08
恩 矩阵构建 [a,b] 和 [a;b]是很好的办法

恩啊    matlab中矩阵的运算真的很强大啊~
作者: kong1234    时间: 2013-8-23 20:56
青枫浦上本 发表于 2013-8-23 20:49
恩啊    matlab中矩阵的运算真的很强大啊~

必须的啊 楼主刚接触吧
作者: 灰色031    时间: 2013-8-23 21:06
可以用步长。
作者: 青枫浦上本    时间: 2013-8-23 21:53
青枫浦上本 发表于 2013-8-23 20:49
恩啊    matlab中矩阵的运算真的很强大啊~

恩呢   是因为参加数学建模的培训课才刚开始接触的~新手~
作者: 青枫浦上本    时间: 2013-8-23 21:58
灰色031 发表于 2013-8-23 21:06
可以用步长。

不是很懂   求指教~
作者: 小屁    时间: 2013-8-23 23:50
青枫浦上本 发表于 2013-8-23 21:53
恩呢   是因为参加数学建模的培训课才刚开始接触的~新手~

你是要参加今年的国赛吗,想想去年我还真是什么也不会啊,现在是懂了一点点,可是对数模没那么多兴趣了,低年级的时候参加数模还是很有好处的
作者: 青枫浦上本    时间: 2013-8-24 12:21
小屁 发表于 2013-8-23 23:50
你是要参加今年的国赛吗,想想去年我还真是什么也不会啊,现在是懂了一点点,可是对数模没那么多兴趣了, ...

恩恩   虽然觉得难度相当大,也没什么机会获奖~但是就当是学习体验吧   嘿嘿,也趁此机会学习怎么和他人更好的合作    还是挺开心的~
作者: 小屁    时间: 2013-8-24 18:31
青枫浦上本 发表于 2013-8-24 12:21
恩恩   虽然觉得难度相当大,也没什么机会获奖~但是就当是学习体验吧   嘿嘿,也趁此机会学习怎么和他人更 ...

难度是有的,但是获奖机会也很大,不过要想拿到国奖一个是看实力,一个就是运气。主要是看写作的写的是不是漂亮,这是最主要的,很多时候结果是算不出来的,但是写作必须要写出来,要做好心理准备哦
作者: 青枫浦上本    时间: 2013-8-24 19:35
小屁 发表于 2013-8-24 18:31
难度是有的,但是获奖机会也很大,不过要想拿到国奖一个是看实力,一个就是运气。主要是看写作的写的是不 ...

恩恩   好的    谢谢啦~
作者: 阿鑫    时间: 2013-8-24 21:03
用spdiags命令生成稀疏带状矩阵,然后在换为满矩阵即可
具体: a=ones(6,4);
>> A=spdiags(a,[0,6,12,18],6,24);
>> full(A)

ans =

  Columns 1 through 22

     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0
     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0
     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0
     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1
     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0
     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0

  Columns 23 through 24

     0     0
     0     0
     0     0
     0     0
     1     0
     0     1

或者把各个块连接起来
a=eye(6);
>> A=horzcat(a,a,a,a)

A =

  Columns 1 through 21

     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0
     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0
     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1
     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0
     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0
     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0     0     0     1     0     0     0

  Columns 22 through 24

     0     0     0
     0     0     0
     0     0     0
     1     0     0
     0     1     0
     0     0     1

作者: 青枫浦上本    时间: 2013-8-24 21:59
阿鑫 发表于 2013-8-24 21:03
用spdiags命令生成稀疏带状矩阵,然后在换为满矩阵即可
具体: a=ones(6,4);
>> A=spdiags(a,[0,6,12,18], ...

写的好仔细,超级感谢~又学到了新的方法了~
作者: 天空和海    时间: 2013-8-27 08:30
矩阵的1在每一行里面是有规律的,先生成全0矩阵,再赋值。
作者: 青枫浦上本    时间: 2013-8-27 10:48
天空和海 发表于 2013-8-27 08:30
矩阵的1在每一行里面是有规律的,先生成全0矩阵,再赋值。

恩恩    但是赋值的语句我不知道要怎么写
作者: 天空和海    时间: 2013-8-27 10:58
青枫浦上本 发表于 2013-8-27 10:48
恩恩    但是赋值的语句我不知道要怎么写
  1. clear;clc;
  2. a=zeros(6,24)
  3. for i=1:6
  4.     a(i,i:6:24)=1
  5. end
复制代码

作者: 青枫浦上本    时间: 2013-8-27 12:12
天空和海 发表于 2013-8-27 10:58

恩恩   超级感谢啊~
作者: 天空和海    时间: 2013-8-27 14:17
青枫浦上本 发表于 2013-8-27 12:12
恩恩   超级感谢啊~

不用谢,大家一起学习!




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5