【发布时间】:2015-11-20 02:31:18
【问题描述】:
我有一个波形,其中包含从射频收发器获得的相移信息。它不是规则的波形,而是如下图所示的不均匀波形。我已经使用油漆说明了信封,我该如何在 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
【问题讨论】:
-
您想从峰到峰画一条线并使其平滑吗?在这种情况下,您可以使用简单的查找命令来检查一个点是否高于其最近的邻居,将最大值分配给一个单独的数组,对其进行平滑处理,这就是您的信封。
标签: matlab csv signals signal-processing software-defined-radio