声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1380|回复: 5

[编程技巧] 在学习稀疏矩阵时遇到的问题

[复制链接]
发表于 2007-7-25 18:20 | 显示全部楼层 |阅读模式

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

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

x
最我在学习系数矩阵这一章节,发现一个百思不得其解的问题:
>> 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=[5 2 4 7 1 3 6 2];
>> j=[2 4 3 7 2 5 1 8]
>> s=[8 1 0 5 1 2 4 3];
>> 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。可见只是近似而且数据大了不一定多,貌似随机!
第二问题:我电脑没有那个函数,请问你用什么版本?
发表于 2007-7-25 22:22 | 显示全部楼层
比如说一个2*100的矩阵A,只有A[1][90]这个元素是非零的,请问各位大虾有什么简洁方法输入吗?
------------------------------------------------------------------------------------------------------------
提供两个方法供参考
1 :
>> is=[1];
>> js=[90];
>> as=[100];
>> 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

评分

1

查看全部评分

发表于 2007-7-25 22:25 | 显示全部楼层
如果是多个数字非0的话在上面的基础上写成矩阵就好了
 楼主| 发表于 2007-7-26 09:52 | 显示全部楼层

回复 #2 花如月 的帖子

我用的是6.5版本~
 楼主| 发表于 2007-7-26 09:53 | 显示全部楼层
第二个函数我还不大了解我现在去学习学习  谢谢 兄弟
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-19 16:54 , Processed in 0.073582 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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