chenzhe1983 发表于 2007-7-25 18:20

在学习稀疏矩阵时遇到的问题

最我在学习系数矩阵这一章节,发现一个百思不得其解的问题:
>> sprand(10,10,0.12)

ans =

   (8,1)       0.0153
   (9,1)       0.4451
   (7,2)       0.2722
   (5,4)       0.1987
   (5,5)       0.6038
   (3,8)       0.2028
   (1,9)       0.1389
   (7,9)       0.1988
   (8,10)      0.7468
   (9,10)      0.9318
(10,10)      0.4660
看这一个例子,sprand函数应该生成10*10*0.12=12个非零元素,但实际应用中只生成了11个.
再看另外一例:
>> i=;
>> j=
>> s=;
>> s=sprese(i,j,s,10,10,8)
这一函数运行结果应该生成8个非零元素,但在实际运用中只生成了7个 如下:
s =

   (6,1)      4
   (1,2)      1
   (5,2)      8
   (2,4)      1
   (3,5)      2
   (7,7)      5
   (2,8)      3
请大家讨论下 出现这种想象的原因是什么?

花如月 发表于 2007-7-25 21:06

第一个问题:R = sprand(m,n,density) is a random, m-by-n, sparse matrix with approximately density*m*n uniformly distributed nonzero entries (0 <= density <= 1).在我电脑上sprand(10,10,0.1) 和sprand(10,10,0.11) 产生的数据都是9个。而 x=sprand(10,10,0.111) 产生11个x=sprand(10,10,0.112)产生10。可见只是近似而且数据大了不一定多,貌似随机!
第二问题:我电脑没有那个函数,请问你用什么版本?

jimin 发表于 2007-7-25 22:22

比如说一个2*100的矩阵A,只有A这个元素是非零的,请问各位大虾有什么简洁方法输入吗?
------------------------------------------------------------------------------------------------------------
提供两个方法供参考
1 :
>> is=;
>> js=;
>> as=;
>> S=sparse(is,js,as)

S =

(1,90) 100
2:
>> S=spalloc(2,100,1);%2*100 matric with 1 nezeros elment
>> S(1,90)=100;
>> S
S =

(1,90) 100

jimin 发表于 2007-7-25 22:25

如果是多个数字非0的话在上面的基础上写成矩阵就好了

chenzhe1983 发表于 2007-7-26 09:52

回复 #2 花如月 的帖子

我用的是6.5版本~

chenzhe1983 发表于 2007-7-26 09:53

第二个函数我还不大了解我现在去学习学习谢谢 兄弟
页: [1]
查看完整版本: 在学习稀疏矩阵时遇到的问题