28、matlab算数运算汇总1:加、减、乘、除、幂、四舍五入

1、前言

矩阵向量的算数运算通常指的是矩阵和向量之间的加法、减法、标量乘法、矩阵乘以向量等操作。下面对矩阵向量的算术运算进行总结:

加法:矩阵和向量的加法是将矩阵的每一行分别与向量对应位置的元素进行相加,生成一个新的向量。

例如,对于一个矩阵A和一个向量v,A + v = [a_i + v_i]。

减法:矩阵和向量的减法是将矩阵的每一行分别与向量对应位置的元素进行相减,生成一个新的向量。

例如,对于一个矩阵A和一个向量v,A - v = [a_i - v_i]。

标量乘法:将一个矩阵或向量的每个元素乘以一个标量(实数)。结果是一个新的矩阵或向量,其中每个元素都乘以该标量。

例如,对于一个矩阵A或向量v,c * A = [c * a_ij] 或 c * v = [c * v_i]。

乘法:矩阵和向量之间的乘法是指用矩阵乘以向量,结果是一个新的向量。运算规则是矩阵的每一行与向量对应位置的元素相乘并求和。

例如,对于一个矩阵A和一个向量v,Av = [Σ(a_ij * v_j)]。

幂运算:在矩阵和向量的算术运算中,通常不涉及幂运算。

四舍五入:四舍五入在矩阵和向量运算中很少用到,通常用于数值计算和显示结果的近似。

总结:矩阵和向量的算术运算是线性代数中常见的操作,可以通过这些操作进行矩阵向量之间的加减乘除操作。这些运算在数据处理、机器学习等领域具有重要的应用。

2、加法

说明

plus,+  添加数字,追加字符串

语法

C = A + B 通过对应元素相加将数组 A 和 B 相加
C = plus(A,B) 是执行 A + B 的替代方法
S = sum(___,nanflag) 指定包含还是省略 A 中的 NaN 值。

1)将标量与数组相加

代码及运算

A = [0 1; 1 0];
C = A + 2

C =

     2     3
     3     2

2)追加字符串

说明:创建两个 1×3 字符串数组,然后追加两个数组中位于类似位置的字符串。

代码及运算

s1 = ["Red" "Blue" "Green"]
s2 = ["Truck" "Sky" "Tree"]
s = s1 + s2

s1 = 

  1×3 string 数组

    "Red"    "Blue"    "Green"


s2 = 

  1×3 string 数组

    "Truck"    "Sky"    "Tree"


s = 

  1×3 string 数组

    "RedTruck"    "BlueSky"    "GreenTree"

3)将两个数组相加

代码及运算

A = [1 0; 2 4];
B = [5 9; 2 1];
C = A + B

C =

     6     9
     4     5

3、sum数组元素总和

语法

语法1:S = sum(A,"all") 返回 A 的所有元素的总和。
语法2:S = sum(A,dim) 沿维度 dim 返回总和。

1)向量元素的总和

代码及运算

A = 1:10;
S = sum(A)

S =

    55

2)矩阵列总和

代码及运算

A = [1 3 2; 4 2 5; 6 1 4]
S = sum(A)

A =

     1     3     2
     4     2     5
     6     1     4


S =

    11     6    11

3) 矩阵行总和

代码及运算

A = [1 3 2; 4 2 5; 6 1 4]
S = sum(A,2)

A =

     1     3     2
     4     2     5
     6     1     4


S =

     6
    11
    11

4) 数组切片总和

两个页均为 4×3 的全 1 矩阵

代码及运算

A = ones(4,3,2);
S1 = sum(A,[1 2])

S1(:,:,1) =

    12


S1(:,:,2) =

    12
 4 个页的元素求和,每个页为 3×2 矩阵。

代码及运算

A = ones(4,3,2);
S2 = sum(A,[2 3])

S2 =

     6
     6
     6
     6
 3个页面每个页的总和是一个 4×2 矩阵的元素之和。

代码及运算

A = ones(4,3,2);
S3 = sum(A,[1 3])

S3 =

     8     8     8
 计算一个数组的所有维度上的和

代码及运算

A = ones(4,3,2);
S4 = sum(A,[1 2 3])
Sall = sum(A,"all")

S4 =

    24


Sall =

    24
 单维度求和

代码及运算

A = ones(4,3,2);
S5 = sum(A,1)
A = ones(4,3,2);
S5 = sum(A,2)
A = ones(4,3,2);
S6 = sum(A,3)

S5(:,:,1) =

     4     4     4


S5(:,:,2) =

     4     4     4


S5(:,:,1) =

     3
     3
     3
     3


S5(:,:,2) =

     3
     3
     3
     3


S6 =

     2     2     2
     2     2     2
     2     2     2
     2     2     2
 排除缺失值的总和

代码及运算

A = [1.77 -0.005 NaN -2.95; NaN 0.34 NaN 0.19]
S = sum(A,"omitnan")

A =

    1.7700   -0.0050       NaN   -2.9500
       NaN    0.3400       NaN    0.1900


S =

    1.7700    0.3350         0   -2.7600

4、 cumsum累积和

语法

语法1:B = cumsum(A,dim) 返回沿维度 dim 的元素的累积和。
语法2:B = cumsum(___,nanflag) 指定包含还是省略 A 中的 NaN 值。

1)向量的累积和


说明:计算从 1 到 5 的整数的累积和。元素 B(2) 是 A(1) 和 A(2) 的和,而 B(5) 是元素 A(1) 至 A(5) 的和。

代码及运算

A = 1:5;
B = cumsum(A)

B =

     1     3     6    10    15

2)矩阵行中的累积和


计算 A 的行的累积和。元素 B(3) 是 A(1) 和 A(3) 的和,而 B(5) 是 A(1)、A(3) 和 A(5) 的和。

代码及运算

A = [1 3 5; 2 4 6]
B = cumsum(A,2)

A =

     1     3     5
     2     4     6


B =

     1     4     9
     2     6    12

3) 逻辑输入的累积和

代码及运算

A = [true false true; true true false]
B = cumsum(A,2)

A =

  2×3 logical 数组

   1   0   1
   1   1   0


B =

     1     1     2
     1     2     2

4) 不包括缺失值的累积和


对于包含前导 NaN 值的矩阵列,累积和为 0,直到遇到非 NaN 值。

代码及运算

A = [3 5 NaN 4; 2 6 NaN 9; 1 3 5 NaN]
B = cumsum(A,"omitnan")

A =

     3     5   NaN     4
     2     6   NaN     9
     1     3     5   NaN


B =

     3     5     0     4
     5    11     0    13
     6    14     5    13

5、movsum移动总和

语法

M = movsum(A,k) 返回由局部 k 个数据点总和组成的数组,其中每个总和基于 A的相邻元素的长度为 k 的滑动窗计算得出。

1)向量的中心移动和:计算行向量的三点中心移动和

代码及运算

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,3)

M =

    12    18    13     3    -6    -6    -1     6    12     9

2)向量的尾部移动和:计算行向量的三点尾部移动和。

代码及运算

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,[2 0])

M =

     4    12    18    13     3    -6    -6    -1     6    12

 3)矩阵的移动和:计算矩阵中每行的三点中心移动和。

代码及运算

A = [4 8 6; -1 -2 -3; -1 3 4]
M = movsum(A,2,2)

A =

     4     8     6
    -1    -2    -3
    -1     3     4


M =

     4    12    14
    -1    -3    -5
    -1     2     7

4) 排除缺失值的移动和

代码及运算

A = [4 8 NaN -1 -2 -3 NaN 3 4 5];
M = movsum(A,3,"omitnan")

M =

    12    12     7    -3    -6    -5     0     7    12     9

6、减法:minus, - 

语法

C = A - B 从 A 数组中减去 B 数组,方法是将对应元素相减。
C = minus(A,B) 是执行 A - B 的替代方法

1)从数组减去标量

代码及运算

A = [2 1; 3 5];
C = A - 2

C =

     0    -1
     1     3

2)两个数组相减

代码及运算

A = [1 0; 2 4];
B = [5 9; 2 1];
C = A - B

C =

    -4    -9
     0     3

7、 差分:diff

语法

Y = diff(X,n) 通过递归应用 diff(X) 运算符 n 次来计算第 n 个差分。
Y = diff(X,n,dim) 是沿 dim 指定的维计算的第 n 个差分。

参数

n:差分阶数 dim:运算维度

1)向量元素之间的差分

代码及运算

X = [1 1 2 3 5 8 13 21];
Y = diff(X)

Y =

     0     1     1     2     3     5     8

2)矩阵行之间的差分

代码及运算

X = [1 1 1; 5 5 5; 25 25 25];
Y = diff(X)

Y =

     4     4     4
    20    20    20

3) 二阶差分

代码及运算

X = [0 5 15 30 50 75 105];
Y = diff(X,2)
X = [0 5 15 30 50 75 105];
Y1=diff(X)
Y2=diff(Y1)

Y =

     5     5     5     5     5


Y1 =

     5    10    15    20    25    30


Y2 =

     5     5     5     5     5

4) 矩阵列之间的差分

说明:创建一个 3×3 矩阵,然后计算各列之间的一阶差分。

代码及运算

X = [1 3 5;7 11 13;17 19 23];
Y = diff(X,1,2)

Y =

     2     2
     4     2
     2     4

8、总结

矩阵和向量之间的算数运算包括加法、减法、标量乘法、矩阵乘法、除法、幂运算和四舍五入。下面对这些运算进行总结:

  1. 加法:矩阵和向量的加法是将对应位置的元素相加,生成一个新的矩阵或向量。要求加法的两个矩阵或向量的维度相同。

  2. 减法:矩阵和向量的减法是将对应位置的元素相减,生成一个新的矩阵或向量。要求减法的两个矩阵或向量的维度相同。

  3. 标量乘法:标量乘法是将矩阵或向量的每个元素乘以一个标量,生成一个新的矩阵或向量。

  4. 矩阵乘法:矩阵乘法是指两个矩阵相乘,结果是一个新的矩阵。乘法的前一个矩阵的列数必须等于后一个矩阵的行数。

  5. 除法:在矩阵和向量的算数运算中,通常不涉及除法运算。

  6. 幂运算:幂运算在矩阵和向量的算术运算中并不常见,通常用于其他类型的数学运算。

  7. 四舍五入:四舍五入是一种近似取整的方法,通常用于对结果进行精确度控制或显示处理。

矩阵和向量的算数运算在数学、物理、工程、计算机科学等领域被广泛应用,是理解和实现线性代数和其他数学理论的基础。在实际应用中,需要根据情况选择合适的运算方法,确保得到正确的结果。

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当分析一个音频信号的包络函数时,您可以使用多种方法,其中一种常见的方法是使用包络提取算法,如短时能量或包络跟踪。 以下是使用短时能量法提取音频信号包络函数的示例MATLAB代码: ```matlab function envelope = analyze_envelope(signal, window_size) % 计算音频信号的短时能量 squared_signal = signal.^2; energy = movsum(squared_signal, window_size, 'Endpoints', 'discard'); % 对短时能量进行平滑处理 smooth_energy = smoothdata(energy, 'movmean', window_size); % 对平滑后的能量进行归一化 normalized_energy = smooth_energy / max(smooth_energy); % 返回包络函数 envelope = normalized_energy; end ``` 在这个示例中,函数`analyze_envelope`接受两个参数:音频信号`signal`和窗口大小`window_size`。首先,它计算音频信号的短时能量,然后对短时能量进行平滑处理。最后,将平滑后的能量归一化,并返回作为包络函数的结果。 您可以调用这个函数来分析您的音频信号的包络函数。例如: ```matlab % 读取音频文件 [y, fs] = audioread('your_audio_file.wav'); % 提取包络函数 envelope = analyze_envelope(y, 1000); % 绘制包络函数 t = (0:length(envelope)-1) / fs; plot(t, envelope); xlabel('Time (s)'); ylabel('Envelope'); title('Envelope Function'); ``` 请将`your_audio_file.wav`替换为您的音频文件路径。您还可以根据需要调整窗口大小`window_size`以获得所需的包络函数分辨率。 希望这个示例能帮助到您!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逼子格

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值