0

假设有两条曲线(由两组数据描述):曲线1和曲线2。这两条曲线有两个以上的交点。保留两条曲线的上半部分,得到一条新的曲线3。问题是曲线3的交点处有几个尖角。如何使用matlab通过对这些角进行四舍五入来平滑曲线?

4

2 回答 2

3

应用带有低通滤波器的卷积?

n = 4; %// adjust as needed. Higher value gives more smoothing
curve3_smooth = conv(curve3, ones(1,n)/n, 'same');

正如@Hoki 所指出的,一个更好的想法是应用过滤器两次:一次向前,一次向后,以使平滑操作对称。您可以通过以下方式实现filtfilt

n = 2;
curve3_smooth = filtfilt(ones(1,n)/n, 1, curve3);
于 2014-09-22T12:33:42.727 回答
1

借用 Luis Mendo 的帖子和您在他的帖子中的评论,如果给定 2D 数据,其中每列是一个向量,并且您想分别过滤每一列,那么请filter改用。您可以将维度指定为1,因为您希望沿行进行过滤。像这样:

%// adjust as needed
n = 4;
smooth_curve = filter(ones(1,n)/n, 1, u, [], 1);
于 2014-09-22T13:12:45.667 回答