在 Matlab 中:如何快速创建平滑矩阵?

信息处理 matlab
2022-01-24 03:29:20

假设我有 5 个信号测量值作为列向量:x。我可以通过将信号与平滑矩阵相乘来平滑信号:

 xs=Sx

例如,我可能使用 [1 2 1] 作为平滑内核,在这种情况下我得到:

S =
     2     1     0     0     0
     1     2     1     0     0
     0     1     2     1     0
     0     0     1     2     1
     0     0     0     1     2

到目前为止,我一直在使用函数 sparse() 逐对角地构建矩阵,但这很快就变得乏味了。

如何在 Matlab 中从 1xn 卷积核快速创建 mxm 平滑矩阵?

1个回答

您可以执行以下操作 -

kernel = [1 2 1];
s = conv2(eye(numMeasurements), kernel, 'same')