在学习稀疏矩阵时遇到的问题
最我在学习系数矩阵这一章节,发现一个百思不得其解的问题:>> 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
请大家讨论下 出现这种想象的原因是什么? 第一个问题: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。可见只是近似而且数据大了不一定多,貌似随机!
第二问题:我电脑没有那个函数,请问你用什么版本? 比如说一个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 如果是多个数字非0的话在上面的基础上写成矩阵就好了
回复 #2 花如月 的帖子
我用的是6.5版本~ 第二个函数我还不大了解我现在去学习学习谢谢 兄弟
页:
[1]