📜  在MATLAB中交换没有循环的矩阵的每一行中的两个元素

📅  最后修改于: 2022-05-13 01:54:51.224000             🧑  作者: Mango

在MATLAB中交换没有循环的矩阵的每一行中的两个元素

矩阵是一个两层的数字簇。在 MATLAB 中,我们可以通过在每行中以逗号或空格分隔的数字形式输入组件来创建矩阵,并且还可以使用分号标记每行的结尾。

方法:

  • 第 1 步:使用 logical() 在一行中选取 2 个元素
  • 第 2 步:使用 perms() 获取所有可能的组合
  • 第 3 步:使用 Randi()函数从 1 到 24 中选择 5 个随机数
  • 第 4 步:在每一行中选择数字的逻辑索引
  • 第 5 步:创建矩阵(原始)
  • 第 6 步:转置矩阵
  • 第 7 步:选择数据。每列包含来自矩阵 A 中每一行的两个数字
  • 第 8 步:交换值
  • 第 9 步:填写数据
  • 第 10 步:转置以给出最终结果

例子:

Matlab
% MATLAB Program to Swap 2 Elements 
% in each row without Loops
% Step1 : Pick 2 elements in a row
flag=logical([0 0 1 1]); 
  
% Step2 : Get all possible Combinations
p=perms(flag); 
  
% Step3 : Pick 5 Random Numbers from 1 to 24
index1=randi(24,5,1); 
  
% Step4 : Logical Index to Pick Numbers in Each Row
index=p(index1,:);
  
% Step5 : Create A Matrix (Original)
A=reshape(1:20,5,4)
  
% Step6 : Transpose the Matrix
B=A';
data=B(index');
  
% Step7 : Pick the Data
% Each column contains two numbers from each row in the matrix A
data=reshape(data,2,[]) 
  
% Step8 : Swap the values 
data=data([2,1],:)
  
% Step9 : Fill Back the Data
B(index')=data;
  
% Step10 : Transpose to give the Final Result
B=B'


输出: