全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
3558 8
2013-07-24
我现在想用matlab生成这样一个矩阵Z:Z是一个n*m的矩阵(比如说这里n=200,m=5),最开始Z=zeros(n,m),现在我要在矩阵的某些地方赋值为1,具体的:最终我要保证矩阵的每一列相加等于一个确定的数,这个数来源于之前的多项分布,例如:N=mnrnd(n,P),这里的P是m*1的向量,代表概率,举个具体的例子:假设N=[24 22 33 63 58],那么矩阵Z的第一列所有值相加应该等于24,第二列等于22 ,第三列等于33,以此类推。接下来的一步是,由于Z是0、1feature的矩阵,对于第一列我要把24个1随机分配到200行中,然后对于第二列我要把22个1随机分配到剩余的176(200-24)行中,对于第三列,把33个1随机分配到剩余154(176-22)行中,依次类推。

我把我已有的程序写上:
P=1+rand(m,1);P=P/sum(P);                 %生成P向量,m*1维的,且相加等于1
N=mnrnd(n,P);                                       %生成多项分布
Z=zeros(n,m)
for j=1:m
     sum(Z(:,j))=N(j)

接下来就不会写了。。。。。跪求各位高人指点,在下感激不尽!!!

PS:不知道我SAS专版的好友们有没有精通matlab的。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-7-24 17:10:19
爱莫能助,不懂……
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-24 17:19:12
scarfacetony 发表于 2013-7-24 17:10
爱莫能助,不懂……
仍然感谢回帖!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-24 17:48:06
自己顶贴,求高手相助!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-24 18:18:38
n=10;
m=5;
P=1+rand(m,1);
P=P/sum(P);                 
N=mnrnd(n,P);                                      
Z=zeros(n,m);

for i=1:m;
    tmp=unifrnd(0,1,n,1);
    tmp(:,2)=zeros(n,1);
    tmp(1:N(i),2)=1;
    sortrows(tmp,1);
    Z(:,i)=tmp(:,2);
end



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-7-24 20:12:17
ziyenano 发表于 2013-7-24 18:18
n=10;
m=5;
P=1+rand(m,1);
多谢牛人!我还在研究你的for语句。。。如果有注释就好了。不过我运行了一下,发现生成的Z好像不太符合我的描述,按照要求,每一行只能存在一个1,现在的Z输出发现前面一些行全都是1
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群