MATLAB 对行进行排序
本教程将讨论使用 MATLAB 中的 sortrows()
函数对矩阵中存在的行进行排序。在数据分析和处理中,排序是必不可少的,因为它可以使数据在排序时易于分析和处理。
例如,如果我们有一张医院的病人表,我们想找到一个特定的人,如果该表没有排序,我们将不得不遍历所有数据才能找到一个人。但是如果表格按照患者姓名的首字母排序,我们可以很容易地看到这个人,因为现在我们只需要查看从特定字母开始的姓名即可。
在 MATLAB 中使用 sortrows()
函数对矩阵行进行排序
我们可以使用 Matlab 的 sortrows()
函数对矩阵中存在的行进行排序。sortrows()
函数的第一个语法如下:
output = sortrows(matrix)
上述语法将根据第一列的元素或每行的第一个元素按升序对给定矩阵中的行进行排序。如果两行或多行具有相同的第一个元素,该函数将比较它们的第二个元素,依此类推。
例如,让我们使用上述语法对矩阵中的行进行排序。请参阅下面的代码。
clc
clear
My_matrix = [5:10;2:7;3:8]
New_matrix = sortrows(My_matrix)
输出:
My_matrix =
5 6 7 8 9 10
2 3 4 5 6 7
3 4 5 6 7 8
New_matrix =
2 3 4 5 6 7
3 4 5 6 7 8
5 6 7 8 9 10
我们在上面的代码中创建了一个 3×6 矩阵并对其行进行了排序。我们可以比较输出中的两个矩阵来检查结果。
如果我们查看 My_matrix
矩阵的第一列,我们可以看到第二行将排在最前面,因为第二行的第一个元素是最小的,而第一个值最大的第一行将排在最后输出。我们可以在 sortrows()
函数中传递任意大小的矩阵。
sortrows()
函数的第二种语法如下:
output = sortrows(matrix, column)
我们可以使用上面的语法来设置输入矩阵的列号,这将用于对给定矩阵中存在的行进行排序。如果我们不传递列号,该函数将使用矩阵的第一列对行进行排序。
我们还可以在一个向量中传递多个列号,该函数将根据第一个列号对行进行排序。如果当前列中存在两个或多个相同的值,则函数将移动到给定向量中存在的下一个列号。
例如,让我们使用第二列和第三列对矩阵的行进行排序。请参阅下面的代码。
clc
clear
My_matrix = [5:10;3:8;7:-1:2]
New_matrix = sortrows(My_matrix,[3 4])
输出:
My_matrix =
5 6 7 8 9 10
3 4 5 6 7 8
7 6 5 4 3 2
New_matrix =
7 6 5 4 3 2
3 4 5 6 7 8
5 6 7 8 9 10
如果我们查看 New_matrix
矩阵的第三列和第四列,我们可以看到第三列和第四列的元素已排序。如果我们只传递具有相同值的单个列号,该函数将不会更改行的位置。
sortrows()
的第三种语法如下所示。
output = sortrows(matrix, column, direction)
在上面的语法中,方向将定义我们想要对行进行排序的顺序,例如 ascend
表示行的升序,descend
表示行的降序。默认情况下,顺序设置为升序。
在多个列号的情况下,我们还可以添加多个方向作为将用于每一列的单元格数据类型。
例如,如果我们定义两个列号和两个方向,则第一列将按照第一个方向进行排序。如果有相同的值,该函数将移动到第二列并根据第二个方向对行进行排序。
例如,让我们按照两个方向对上面的矩阵进行排序。请参阅下面的代码。
clc
clear
My_matrix = [5:10;3:8;7:-1:2]
New_matrix = sortrows(My_matrix,[3 4],{'ascend' 'descend'})
输出:
My_matrix =
5 6 7 8 9 10
3 4 5 6 7 8
7 6 5 4 3 2
New_matrix =
3 4 5 6 7 8
7 6 5 4 3 2
5 6 7 8 9 10
在上面的输出中,当函数到达第三列中存在的两个相同的值,即 5 时,它将移动到第四列,并使用 6 和 4 的值并按降序对它们进行排序,因为方向为第二列编号是递减的。现在让我们谈谈使用 sortrows()
函数对表中的行进行排序。
在 MATLAB 中使用 sortrows()
函数对表行进行排序
我们还可以使用 sortrows()
函数对表格的行进行排序,就像我们对上面矩阵的行进行排序一样。我们还可以设置要用于排序的变量或列以及排序的方向或顺序。
例如,让我们创建一个表并根据变量对其行进行排序。请参阅下面的代码。
clc
clear
P_Name = {'Smith';'John';'Will';'Jones';'Brown'};
P_Age = [37;47;37;40;49];
P_Height = [72;68;63;67;64];
P_table = table(P_Age,P_Height,'RowNames',P_Name)
Sorted_table = sortrows(P_table,'P_Height','descend')
输出:
P_table =
5×2 table
P_Age P_Height
_____ ________
Smith 37 72
John 47 68
Will 37 63
Jones 40 67
Brown 49 64
Sorted_table =
5×2 table
P_Age P_Height
_____ ________
Smith 37 72
John 47 68
Jones 40 67
Brown 49 64
Will 37 63
在上面的代码中,我们创建了一个患者表,包括他们的姓名、年龄和身高,我们根据患者的身高降序对表进行排序。我们可以在输出中看到,表格是按照患者身高的降序排列的。
我们还可以使用多个变量和方向进行排序,就像在矩阵的情况下一样。在多个变量的情况下,我们必须在一个单元格中传递变量和方向名称。
默认情况下,sortrows()
函数将使用所有变量和升序对给定表的行进行排序。我们还可以使用 RowNames
参数代替变量名,根据它们的名称对行进行排序。
如果我们在表格中有缺失的展示位置,并且想要根据缺失的展示位置对表格进行排序,我们可以使用 MissingPlacement
参数。之后,我们可以传递它的值,如 first
将缺失值放在首位,last
将值放在末尾,auto
将元素按升序排列在最前面,在降序的情况下将元素放在最后。
我们还可以使用 ComparisonMethod
参数更改用于比较值的方法。之后,我们必须传递方法的名称,如实数值的 real
、复数值的 abs
和 auto
,在实数输入的情况下将使用实数值,在复杂输入的情况下使用复数值.
比较方法在复杂值的情况下很有帮助。例如,如果我们只想比较复数值的实部,我们可以使用 real
方法,如果我们希望取复数值的绝对值,我们可以使用 abs
方法。
我们还可以从 sortrows()
函数获取索引,该函数显示输入矩阵或表的行的重新排列。上述属性的语法如下所示。
[Sorted_table, index] = sortrows(P_table,'RowNames','MissingPlacement','last','ComparisonMethod','abs')
如果我们想从输入矩阵或表中对特定数量的行进行排序,我们必须将它们存储在单独的矩阵或表中,然后使用 sortrows()
函数并将结果存储回原始表或矩阵中。
相关文章
如何在 Matplotlib Pyplot 中显示网格
发布时间:2024/02/04 浏览次数:142 分类:Python
-
本文演示了如何在 Python Matplotlib 中在一个图上画一个网格。使用 grid()函数来绘制网格,并解释了如何改变网格颜色和线条类型。
在 Matplotlib 中的图中添加文字
发布时间:2024/02/04 浏览次数:180 分类:Python
-
本教程展示了我们如何使用 plt.text()方法在 Matplotlib 中为图或轴添加文字。
如何在 Matplotlib 中的多个线条之间进行填充
发布时间:2024/02/04 浏览次数:208 分类:Python
-
`fill_between()` 每次只能填充两条线之间的区域,但是我们可以选择一对行来填充多个线条之间的区域。
如何在 Matplotlib 中画一条任意线
发布时间:2024/02/04 浏览次数:166 分类:Python
-
本教程讲解了我们如何在 Matplotlib 中使用 matplotlib.pyplot.plot()、matplotlib.pyplot.vlines()、matplotlib.pyplot.hlines()方法和 matplotlib.collection.LineCollection 绘制任意线条。
Pandas 在 Matplotlib 柱状图上绘制多列图
发布时间:2024/02/04 浏览次数:189 分类:Python
-
在本教程中,我们将探讨如何使用 `DataFrame` 对象的 `plot()` 方法在柱状图上绘制多列。
如何在 Matplotlib 中绘制数据列表的直方图
发布时间:2024/02/04 浏览次数:178 分类:Python
-
本教程介绍了如何使用 plt.hist()方法从数据列表中绘制直方图。我们可以使用 plt.hist()方法从数据列表中绘制直方图。
Matplotlib 中的叠加条形图
发布时间:2024/02/04 浏览次数:182 分类:Python
-
本教程展示了如何使用 plt.bar()方法将某些数据集的条形图堆叠在另一个数据集上。我们在 Matplotlib 中使用 matplotlib.pyplot.bar()方法生成条形图。
在 Python Matplotlib 中生成反向色彩图
发布时间:2024/02/04 浏览次数:136 分类:Python
-
本教程解释了如何反转 Python Matplotlib Plot 的 Colormap。
设置 Matplotlib 网格间隔
发布时间:2024/02/04 浏览次数:250 分类:Python
-
本教程将介绍我们如何在 Matplotlib 绘图中设置网格间距,并对主要网格和次要网格应用不同的样式。