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

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

m=10;%行数 n=15;%列数 A=zeros(m,n); %生成全零矩阵 b=randi(m,[1 n]); %生成n个从1到m的随机整数 ind=sub2ind([m,n],b,1:n);%形成位置 A(ind)=1;%将对应位置变为1

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

提供一个方法: 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...

举特殊例子如下,多列向量自己扩展吧: A=[1,2,0,4,5,0,7,8,9,0,11,12,13]' %%定义一个13个元素的列向量 zero_index=find(A==0) %%挑出所有的0的位置 k=length(zero_index) %%所有0的个数 first_zero_index=zero_index(1); %%第一个0元素的位置 l...

方案一、就是一楼回答的,用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函数,而行数和列数又...

创建一个随机矩阵:它的每行每列都只有一个位置为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

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

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

假设n=100; 以下为代码: A=zeros(1,100); index=randperm(100,5); A(index)=1;

对角阵还是????????? diag 或者zeros然后替换特定位置的

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