迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > MATLAB >

在 MATLAB 中交换行和列

作者:迹忆客 最近更新:2023/04/22 浏览次数:

本教程演示如何在 MATLAB 中交换行和列。

MATLAB 有不同的方法来相互交换行和列。 本教程包括在 MATLAB 中交换行和列的不同方法。


使用基本 MATLAB 交换行和列

Base MATLAB 有一个简单的功能,可用于交换行与行和列与列。 让我们尝试一个用行交换行的例子。

% Random 4x6 matrix
A = rand(4,6)

%Swap 1st row with the fourth.
A([4 1],:) = A([1 4],:)

上面的代码创建了一个随机的 4x6 矩阵,并将第 1 行与第 4 行交换。 查看输出:

交换行 4x6

正如我们所见,第 1 行与第 4 行交换。 现在让我们对列尝试相同的示例。

% Random 4x6 matrix
A = rand(4,6)

%Swap 1st column with the sixth.
A(:,[1 6]) = A(:,[6 1])

您可能认为代码相似,但有细微差别。 对于行,我们使用表达式 A([4 1],:),对于列,我们在开头使用逗号和冒号符号,如 A(:,[1 6])。

查看此代码的输出。

交换列 4x6


在 MATLAB 中使用用户定义的函数交换行和列

我们还可以使用基本 MATLAB 功能创建用户定义的函数,该函数可用于行和列。 这是功能。

swap.m:

function matrix = swap(matrix,dimension,a,b)

if dimension == 1
    row_swap = matrix(a,:);
    matrix(a,:) = matrix(b,:);
    matrix(b,:) = row_swap;
elseif dimension == 2
    col_swap = matrix(:,a);
    matrix(:,a) = matrix(:,b);
    matrix(:,b) = col_swap;
end

上面的函数需要四个参数,首先是矩阵; 其次,维度,其中 1 表示行,2 表示列,两个元素可以相互交换,行或列。

让我们尝试用这个函数交换行。

% Random 4x6 matrix
A = rand(4,6)

% Swap rows using the swap function
swap(A,1,1,4)

上面的代码会将第一行与第四行交换。 查看输出:

交换行功能

要交换列,我们需要将维度更改为 2。请参见示例:

% Random 4x6 matrix
A = rand(4,6)

% Swap rows using the swap function
swap(A,2,1,6)

上面的代码将使用 swap 函数交换第一列和第六列。 查看输出:

交换列功能


在 MATLAB 中结合使用 randperm() 和 size() 函数交换行和列

randperm() 方法用于对指定矩阵的整数进行随机排列。 它只需要一个参数,即矩阵。

size() 方法返回数组每个维度的大小或指定矩阵的大小。 该方法可用于以下不同的方式。

  1. size(X) - 返回数组每个维度的大小。
  2. [m,n] = size(X) - 返回两个变量中指定矩阵的大小。
  3. size(X,dim) - 通过标量 dim 返回 X 维度的大小。
  4. [d1,d2,d3,…,dn] = size(X) - 在单独的变量中返回数组的 n 维大小。

其中 X 是数组、矩阵或维度,dim 是维度的标量值。 这种方法的缺点是它随机交换行或列。

让我们尝试使用此方法交换行。

% Random 4x4 matrix
A = rand(4,4)

% Calling the randperm() and size() methods
% to swap rows
Swapped = A(randperm(size(A, 1)),:)

上面的代码将随机交换一行。 查看输出:

A =

    0.4574    0.6377    0.2891    0.2548
    0.8754    0.9577    0.6718    0.2240
    0.5181    0.2407    0.6951    0.6678
    0.9436    0.6761    0.0680    0.8444


Swapped =

    0.9436    0.6761    0.0680    0.8444
    0.4574    0.6377    0.2891    0.2548
    0.5181    0.2407    0.6951    0.6678
    0.8754    0.9577    0.6718    0.2240

与交换列类似,这里是示例。

% Random 4x4 matrix
A = rand(4,4)

% Calling the randperm() and size() methods
% to swap rows
Swapped = A(:, randperm(size(A, 1)))

上面的代码将随机交换给定矩阵的列。 查看输出:

A =

    0.6022    0.4624    0.3225    0.1759
    0.3868    0.4243    0.7847    0.7218
    0.9160    0.4609    0.4714    0.4735
    0.0012    0.7702    0.0358    0.1527


Swapped =

    0.3225    0.6022    0.4624    0.1759
    0.7847    0.3868    0.4243    0.7218
    0.4714    0.9160    0.4609    0.4735
    0.0358    0.0012    0.7702    0.1527

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 Matplotlib Pyplot 中显示网格

发布时间:2024/02/04 浏览次数:142 分类:Python

本文演示了如何在 Python Matplotlib 中在一个图上画一个网格。使用 grid()函数来绘制网格,并解释了如何改变网格颜色和线条类型。

如何在 Matplotlib 中画一条任意线

发布时间:2024/02/04 浏览次数:166 分类:Python

本教程讲解了我们如何在 Matplotlib 中使用 matplotlib.pyplot.plot()、matplotlib.pyplot.vlines()、matplotlib.pyplot.hlines()方法和 matplotlib.collection.LineCollection 绘制任意线条。

Matplotlib 中的叠加条形图

发布时间:2024/02/04 浏览次数:182 分类:Python

本教程展示了如何使用 plt.bar()方法将某些数据集的条形图堆叠在另一个数据集上。我们在 Matplotlib 中使用 matplotlib.pyplot.bar()方法生成条形图。

设置 Matplotlib 网格间隔

发布时间:2024/02/04 浏览次数:250 分类:Python

本教程将介绍我们如何在 Matplotlib 绘图中设置网格间距,并对主要网格和次要网格应用不同的样式。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便