迹忆客 专注技术分享

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

MATLAB repelem() 函数

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

本教程将讨论使用 MATLAB 的 repelem() 函数重复复制数组元素。


MATLAB repelem() 函数

手动创建包含许多元素的数组会花费大量时间,因为我们必须编写每个数组元素。 但是我们可以使用循环和Matlab的一些内置函数在短时间内创建一个包含很多元素的数组。

repelem() 函数还用于通过重复标量或向量在短时间内创建大量元素的数组。 repelem() 函数用于重复数组元素的副本,并根据重复的元素创建新数组或矩阵。

repelem() 函数有两种语法,第一种语法如下所示。

output = repelem(v,n)

第一种语法将返回向量或标量 v 的重复元素的向量。如果 n 是标量,则输入向量 v 值将重复 n 次,并且输出向量的长度将等于输入向量的长度 乘以n。

如果 n 是一个向量,向量 v 的每个元素将根据向量 n 的相应元素重复,并且向量 n 应该与输入向量 v 具有相同的长度。输出向量的长度将等于向量的总和 n 个元素。

换句话说,向量 v 的第一个元素将根据向量 n 的第一个元素重复,依此类推。 例如,让我们创建一个向量并重复它以创建两个新向量。

请参阅下面的代码。

clc
clear

X = [1 2 3]
Y = repelem(X,2)
Z = repelem(X,[1 2 3])

输出:

X =

     1     2     3


Y =

     1     1     2     2     3     3


Z =

     1     2     2     3     3     3

在上面的代码中,我们将向量 X 的每个元素重复两次以创建新向量 Y。我们将向量 X 的第一个元素重复一次,将向量 X 的第二个元素重复两次,将第三个元素重复三次以创建 新向量 Z。

我们可以在输出中看到向量 X 的每个元素被重复两次以创建向量 Y,而向量 Z 表明它是根据第二个 repelem() 函数中定义为第二个参数的向量创建的。

repelem() 函数的第二种语法如下所示:

output = repelem(m,r1,...,rN)

第二种语法用于重复矩阵的元素以创建新的 2D 或 3D 矩阵和数组。 第一个参数 m 是输入矩阵或数组,可以是任意维度。

所有其他参数用于设置块大小,块大小用于重复输入矩阵或数组的每个元素,它可以是标量或与输入矩阵的特定维度长度相同的向量。 例如,如果我们将 2 和 3 作为第二个和第三个参数传递给 repelem() 函数,它将通过重复输入矩阵的每个元素并将其放入新矩阵来创建一个 2×3 矩阵。

换句话说,输入矩阵的每个元素将在行或第一维中重复两次,在列或第二维中重复 3 次以创建新的数组或矩阵。 如果我们传递第四个参数,输入矩阵的每个元素也将在三维中重复以创建多维数组或矩阵。

例如,让我们创建一个 2×2 矩阵并重复其元素以创建一个新矩阵。 请参阅下面的代码。

clc
clear

X = magic(2)
Y = repelem(X,2,2)

输出:

X =

     1     3
     4     2


Y =

     1     1     3     3
     1     1     3     3
     4     4     2     2
     4     4     2     2

在上面的代码中,我们将输入矩阵的每个元素在第一维或行维中重复两次,在第二维或列维中重复两次以创建新矩阵。 输出矩阵的大小将等于输入向量的特定维度与块大小的乘积。

在上面的示例中,输出矩阵的大小将为 4×4,因为输入矩阵大小为 2×2,并且块大小也为 2×2。 输出矩阵的维度将等于块大小的维度,如上例所示,块有两个维度,输出矩阵也有两个维度。

如果我们不想在特定维度中重复某个元素,我们可以将一个作为该维度的值传递。 例如,如果我们不想重复第一个或行维度中的元素以便行数应该相同,我们可以在上面的代码中将一个作为第二个参数传递。

在上面的示例中,每个元素将在两个维度上重复 2 次。 但是如果我们想根据我们的要求重复每个元素,我们可以使用一个与特定维度长度相同的向量,它会定义特定元素将被重复的次数。

例如,让我们重复上面的例子,根据一个向量只重复列值。 请参阅下面的代码。

clc
clear

X = magic(2)
Y = repelem(X,1,[3 2])

输出:

X =

     1     3
     4     2


Y =

     1     1     1     3     3
     4     4     4     2     2

在上面的代码中,我们将输入矩阵的第一列重复 3 次,将第二列重复 2 次以创建一个新矩阵 Y。我们可以在上面的输出中看到输出矩阵的行数与 输入矩阵的行数,因为我们没有重复行,而列数增加了,因为我们将第一列重复了三次,第二列重复了两次。

我们可以对任何维度进行此操作。 我们还可以使用 repelem() 函数通过在特定维度上重复其值来从小表创建大表。

例如,让我们使用 table() 函数创建一个表,然后通过重复第一个表的值来创建另一个大表。 请参阅下面的代码。

clc
clear

T_1 = table([19; 16],[60; 53],'VariableNames',{'Age' 'Height'})
T_2 = repelem(T_1, 2,2)

输出:

T_1 =

  2×2 table

    Age    Height
    ___    ______

    19       60
    16       53


T_2 =

  4×4 table

    Age    Age_1    Height    Height_1
    ___    _____    ______    ________

    19      19        60         60
    19      19        60         60
    16      16        53         53
    16      16        53         53

在上面的代码中,我们重复了行和列维度 2 次以创建更大的表。

转载请发邮件至 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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便