| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1112 人关注过本帖
标题:求救,矩阵随机分布问题
只看楼主 加入收藏
tkovampire
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-1-16
收藏
 问题点数:0 回复次数:5 
求救,矩阵随机分布问题
求矩阵A的随机分布,且使矩阵A中各元素的平均值为一常数,计算量又不能过大,该如何处理?
请高手指教,急!!!
搜索更多相关主题的帖子: 随机分布 矩阵 
2007-03-22 18:30
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
收藏
得分:0 

呵呵,是不是要看你需要产生何种随机分布?

如果是需要产生正态分布的随机数你可以用normrnd('均值',‘标准差’,‘行数’,‘列数’)

A=normrnd(2,0.5,50,50); %产生均值为2,标准差为0.5的50*50矩阵A

B=reshape(A,50*50,1);

mean(B) %求矩阵均值

std(B) %求矩阵标准差

呵呵,不过产生结果不一定完全就是2和0.5,毕竟是随机数有一定的偏差在里面

你可以试试,如果想产生其他分布的随机数,找找对应分布函数命令就可以了

你也可以参考random函数


2007-03-23 08:56
tkovampire
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2007-1-16
收藏
得分:0 
谢谢楼上的,我用rand函数写了一段代码,
aveden=0;
while(aveden~=0.25)
iniden=rand(nx,ny)<0.3;
ave=sum(iniden(:,:));
aveden=ave./(nx*ny)
end
我想得到的平均值为0.25,求一个iniden矩阵的随机分布,可得到的iniden矩阵中的值总是0或1,我希望得到的值在0.3以下,该如何处理呀?

非常感谢!
2007-03-23 10:59
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
收藏
得分:0 

呵呵,问题出在“iniden=rand(nx,ny)<0.3;”这句话上

最后iniden保存的是:如果rand(nx,ny)中的值<0.3为1(真),反之则为0(假),这和C语言类似,结果就是iniden中保存的都是0或1的逻辑值,而不是一般意义上的数值

A=rand(2,2)

A =

0.2618 0.7839
0.7085 0.9862

iniden=A<0.3

iniden =

1 0
0 0


这能帮助你理解

如果你想产生值都在0.3以下的矩阵,不妨试试

B=rand(4,4)*0.3

B =

0.1420 0.2487 0.2154 0.0263
0.2708 0.0499 0.1708 0.1330
0.1353 0.1182 0.1382 0.1099
0.2414 0.1562 0.1336 0.0908

呵呵,希望这样能解决你的问题





2007-03-23 17:59
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
收藏
得分:0 

如果你想产生均值为0.25,并且所有值都小于0.3的矩阵

可以用

>> normrnd(0.25,0.03,5,5)

ans =

0.2944 0.2401 0.2246 0.2464 0.2370
0.2841 0.2247 0.2426 0.2480 0.2476
0.2295 0.2649 0.2699 0.2646 0.2961
0.2112 0.2947 0.2244 0.2321 0.2318
0.2478 0.2336 0.2140 0.2455 0.2096


呵呵,不知道我理解得对不对

[此贴子已经被作者于2007-3-23 18:06:25编辑过]


2007-03-23 18:04
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
收藏
得分:0 
aveden=0;
while(aveden~=0.25)
iniden=rand(nx,ny) ;
iniden(iniden>=0.3) = 0.25 ;
ave=sum(iniden(:,:));
aveden=ave./(nx*ny)
end

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2007-03-23 19:24
快速回复:求救,矩阵随机分布问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025256 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved