ljsq.net
当前位置:首页 >> mAtlAB 随机生成每列只有一个1 其余为0的矩阵 >>

mAtlAB 随机生成每列只有一个1 其余为0的矩阵

a=(round(rand(10,1)));%求一个随机0-1矩阵 A=diag(a);%用0-1矩阵形成对角矩阵 b=randperm(10); C=A(:,b) %C是把一个随机的对角矩阵打乱

方案一、就是一楼回答的,用eye函数: >> eye(2,3) ans = 1 0 0 0 1 0 方案二、若不知道eye函数,因为你的问题中 行数和列数都很小,所以直接赋值就可以了: x = zeros(2,3); x(1,1) = 1; x(2,2) = 1; 方案三、若不知道eye函数,而行数和列数又...

提供一个方法: n=10;%可以改成你想要的数 A=zeros(n); index=randperm(n);%生成随机排列是关键 A((n)*(0:n-1)+index)=1 因为是随机序列,所以每次都不一样,一个结果: A = 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0...

创建一个矩阵,每一行只有一个1,其余全为0,可以用这个代码: eye(n,n) 或 diag(ones(n,1)) %生成n×n矩阵 例如: >>eye(5,5) %生成5×5单位矩阵 >>diag(ones(5,1)) %生成5×5单位矩阵

如下 prob = [0.2 0.3 0.5]; [~,x] = histc(rand(1e3,1),cumsum(prob)) 如果有Communications System Toolbox也可以用randsrc: x = randsrc(1e6,1,[0 1 2;prob]);

单位矩阵函数eye: a=eye(3) 运行结果为: a = 1 0 0 0 1 0 0 0 1 如果说是所有满足这样条件的,可以是两个全排列,一个是从行看,任意两行交换位置,共n!个,再一个是从列看,任意两列交换位置,也有n!个不同的矩阵,所有共有2*n!个不同的矩...

dec2bin(randperm(7),3) 思路: 0到7产生一个全排列. 然后将这8个数转成二进制。 你要的应当就是这个。

创建一个随机矩阵:它的每行每列都只有一个位置为1,其余为0 a=eye(5) b=randperm(5) c=a(:,b) 这样c就满足要求。 创建一个矩阵只要求每列上只有一个位置为1 a=zeros(5); for i=1:length(a) b=randperm(5); a(b(1),i)=1; end

有,可以用randi函数,例如生成五阶矩阵: randi(2,5)-1 -----生成的矩阵中都是0和1,且符合均匀分布。

网站首页 | 网站地图
All rights reserved Powered by www.ljsq.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com