matlab如何定义一个确定1的个数的随机0,1矩阵

matlab中如何定义一个随机矩阵,比如说我用rand定义一个m*n的随机0跟1的矩阵,但我想确定矩阵中1的个数,但1的分布是随机的。比如100*50的矩阵,我想要有20... matlab中如何定义一个随机矩阵,比如说我用rand定义一个m*n的随机0跟1的矩阵,但我想确定矩阵中1的个数,但1的分布是随机的。比如100*50的矩阵,我想要有20个1,随机分布。请问用matlab程序如何实现?? 展开
 我来答
落水神
2010-04-22 · TA获得超过884个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:191万
展开全部
a=rand(100,50); %产生随机矩阵
b=reshape(a,[1,numel(a)]); %重新排列矩阵
c=sort(b); %对矩阵进行升序排列
d=c(20); %取倒数第20小的数
e=a<=d %矩阵中若元素小于等于d,即为真即为1,否为0
e为你所求矩阵.

其了怪了,测试下,竟然运行速度比他快;
l1=clock;
tt1=cputime;
for i=1:1000
a=rand(100,50);
b=reshape(a,[1,numel(a)]);
c=sort(b);
d=c(20);
e=a<=d ;
end
etime(clock,l1)
cputime-tt1
l2=clock;
tt2=cputime;
for i=1:1000
A=zeros(100,50);
idx=randperm(100*50);
A(idx(1:20))=1;
end
etime(clock,l2)
cputime-tt2
结果:
ans =

0.875000000000000

ans =

0.906250000000000

ans =

0.937000000000001

ans =

0.953125000000000
浪迹天涯的流星
推荐于2016-03-15 · 知道合伙人教育行家
浪迹天涯的流星
知道合伙人教育行家
采纳数:8918 获赞数:81553
对于基本办公软件比较擅长。

向TA提问 私信TA
展开全部
a=rand(100,50); %产生随机矩阵
b=reshape(a,[1,numel(a)]); %重新排列矩阵
c=sort(b); %对矩阵进行升序排列
d=c(20); %取倒数第20小的数
e=a<=d %矩阵中若元素小于等于d,即为真即为1,否为0
A=zeros(100,50); idx=randperm(100*50); A(idx(1:20))=1。
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB应用非常之广泛。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东吴小肥羊
2015-08-26 · TA获得超过2万个赞
知道大有可为答主
回答量:4967
采纳率:87%
帮助的人:595万
展开全部
方法如下:
A=zeros(100,50);
idx=randperm(100*50);
A(idx(1:20))=1;
如此即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
greatdju
推荐于2016-02-19 · TA获得超过2.2万个赞
知道大有可为答主
回答量:2486
采纳率:50%
帮助的人:4452万
展开全部
A=zeros(100,50);
idx=randperm(100*50);
A(idx(1:20))=1;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式