我有一個包含從RF收發器獲得的相移信息的波形。它不是一個普通的波形,而是如下圖所示的不均勻。我已經說明了使用paint的信封,以及如何在MATLAB中做到這一點? 如何找到不均勻波形的包絡線
我也附上了waveform.csv。在我的MATLAB代碼中,我已經使用平均濾波器來平滑原始信號。
clc; clear all; close all;
%% Extract data from .csv
file = '150825_px6_human_rotcw_0to60cm_Ch1.csv';
data = csvread(file, 0, 3);
%% Shift time
shift = data(1,1);
for i = 1:length(data)
t(i) = data(i,1) - shift;
end
%% Low pass filter
filterlen = 500;
y = myfilter(data(:,2), filterlen);
%% Plot
figure;
plot(data(:,1), data(:,2));
title('Raw signal');
figure;
plot(t(1:end-filterlen+1), y);
title('After low pass filter');
myfilter.m (simple averaging filter):
function y = myfilter(x,a)
for i = 1:(length(x)-(a-1))
y(i) = sum(x(i:(i+a-1)))/a;
end
y = y';
end
你想繪製一條從峯到峯的線條並使其平滑嗎?在這種情況下,您可以使用一個簡單的find命令來檢查一個點是否高於其最近的鄰居,將最大值分配給一個單獨的數組,平滑該數據並且存在您的信封。 – Adriaan