
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程序如何实现??
展开
展开全部
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
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
展开全部
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应用非常之广泛。
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应用非常之广泛。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
方法如下:
A=zeros(100,50);
idx=randperm(100*50);
A(idx(1:20))=1;
如此即可。
A=zeros(100,50);
idx=randperm(100*50);
A(idx(1:20))=1;
如此即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A=zeros(100,50);
idx=randperm(100*50);
A(idx(1:20))=1;
idx=randperm(100*50);
A(idx(1:20))=1;
本回答被提问者采纳

你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询