如何在MATLAB中生成一个0 1矩阵(每一行,每一列只有一个1)

来自:    更新日期:早些时候
请问各位大神,在MATLAB中,如何创建一个矩阵,每一行只有一个1,其余全为0~

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

可以先生成一个M*N的零矩阵,然后再每列随机选择某行的数赋值为1
A=zeros(M,N);
for
ni=1:N
p=randperm(M);%随机排序1到M的整数
A(p(1),ni)=1;
end

提供一个方法:
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 0 0 0 0 0 1 0
1 0 0 0 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 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 0 0 0 1
用循环实在没必要,n较大的时候严重影响计算速度,不过好编程:
for k=1:n
A(index(k),k)=1
end
效果是一样的,不再啰嗦了。

提供一个方法:
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
0
0
0
0
0
1
0
1
0
0
0
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
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
0
0
0
1
用循环实在没必要,n较大的时候严重影响计算速度,不过好编程:
for
k=1:n
A(index(k),k)=1
end
效果是一样的,不再啰嗦了。

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

没别的要求?
eye(4,4)-----4*4单位矩阵


如何在MATLAB中生成一个0 1矩阵(每一行,每一列只有一个1)视频

相关评论:
  • 18085339566Matlab中矩阵的生成方法
    韩莲杜其中:a是数组的第一个元素;inc是相邻两个元素之间的间隔;b是数组的最后一个元素。例:x=1:3:25 说明:1、若b-a是inc的整数倍,则最后一个元素是b;否则小于b。2、若inc=1,可简写为x=a:b。3、inc可以取整数,也可以取复数。下面,给出了在matlab中的例子。3、均匀采样生成 此方法用于...

  • 18085339566zeros在matlab
    韩莲杜在MATLAB中,zeros是一个函数,用于创建指定大小的零矩阵。详细解释如下:1. zeros函数的基本功能 MATLAB中的zeros函数用于生成一个指定尺寸的零矩阵。这意味着你可以指定矩阵的行数和列数,所生成的矩阵的所有元素都将被初始化为零。这在数学计算、线性代数操作以及许多其他应用中非常有用。例如,如果你...

  • 18085339566如何用matlab生成一个服从威布尔分布的随机数
    韩莲杜matlab 中可以利用wblrnd命令产生所需的服从韦布尔分布的随机数,如下:R = wblrnd(A,B)R = wblrnd(A,B,m,n,...)R = wblrnd(A,B,[m,n,...])其中,A为尺度参数,B为形状参数。m和n为所需要的数的形式,比如说生成m行*n列的矩阵。matlab 内部解释为:This MATLAB function generates ...

  • 18085339566matlab如何画一个矩形脉冲信号?
    韩莲杜在MATLAB中,绘制一个矩形脉冲信号可以通过一系列的函数操作实现。首先,创建一个周期性的脉冲序列可以通过以下代码片段:设x1为一个全为1的向量,长度为2:x1 = ones(1, 2);然后将x1和6个零元素组合,形成x2:x2 = [x1, zeros(1, 6)];接着,放大x2得到所需的周期脉冲信号x:x = 10 * ...

  • 18085339566如何使用matlab制作GUI界面?
    韩莲杜4. 您可以将左侧的控件拖拽到右侧的工作区域,并注意布局的合理性。将控件拖到界面上后,双击可以进入属性编辑器,在此可以设置控件的属性,如大小、颜色、默认值等。5. 完成GUI设计并保存后,系统会自动生成一个相应的MATLAB脚本文件。这个脚本包含了与控件相关的函数绑定和执行界面上业务逻辑的代码。您...

  • 18085339566如何利用matlab生成均匀分布的矩阵?
    韩莲杜1、如果我们想生成一个3*3的均匀分布的矩阵,只需要如下命令:rand(3,3) 或者 rand(3)。2、如果需要获得(a,b)的随机数,我们可以利用(0,1)的均匀随机数来生成(a,b)的均匀随机数。a + (b-a).*rand(m,n) 。这里(a,b) 是你生成随机数的端点,m,n代表矩阵的行和列。3、生成均匀...

  • 18085339566matlab中怎样生成一个区间内不重复的随机数?
    韩莲杜真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机...

  • 18085339566如何用matlab随机生成一个由0,1构成的稀疏矩阵。求各位大神赐教啊...
    韩莲杜比如:A = rand(3) > .9就会生成个0约占90%的3*3矩阵。想变成稀疏矩阵的话:A = sparse(A)

  • 18085339566请问:怎样用matlab随机生成一个只有0,1元素的矩阵?用什么命令,谢谢啊...
    韩莲杜greatdju 采纳率:62% 来自:芝麻团 擅长: 数学 其他编程语言 网站使用 其他回答 没听说过有直接生成的。可以这样子,比如要生成m*n的矩阵,先用rand函数生成元素均为0-1之间的随机数的矩阵,然后逐个判断,0.5一下的改为0,0.5以上的改为1:A=rand(m,n);for i=1:m for j=1:n if A(i,j)<=0.5 A(i...

  • 18085339566MATLAB中如何建立一个Mat文件
    韩莲杜MATLAB中如何建立一个Mat文件?1、mat文件的生成 (1)直接在Matlab中创建并保存矩阵数据 打开Matlab软件,点击左上角文件(File),然后点击新建(new),选择变量(Variable),就新建了一个mat文件。点击你新建的文件,即可打开一个编辑器,输入数据即可。(2)保存单一矩阵数据 如图所示,输入数据,生成数组。

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网