如何在matlab中查找图形中的特定点

时间:2015-12-02 02:46:20

标签: matlab

我正在努力寻找如何在我的数据集中找到特定点。例如,我有一个示波器的测量数据,存储为我在Matlab中导入的.csv文件。绘制后,它看起来像这样:

enter image description here

我的问题是:如何在数据集中找到特定点A-H? 有时噪音很高,Matlab给出了最大值和最小值的错误x(时间)值。有什么建议吗?

我现在使用的代码如下所示:

/////////////////////////////////////////////// //

clear all;

Data = csvread('Data.csv',100,0);

Data = Data(1:end-203,:);
mean_Data = mean(Data(:,2));% macht offset weg
Data_withoutoffset = Data(:,2)-mean_Data;
a = 1;
b = [1/4 1/4 1/4 1/4];

Data_smooth = filter(b,a,Data_withoutoffset)
[maxBBpks,maxBB] = findpeaks(Data_smooth,'MinPeakDistance',1000,'MinPeakHeight',0.5);

Data_inverted = -Data_smooth;
[minBBpks,minBB] = findpeaks(Data_inverted,'MinPeakDistance',1000,'MinPeakHeight',0.5);

figure
hold on
plot(Data_withoutoffset); grid on
plot(maxBB,Data_withoutoffset(maxBB),'rv','MarkerFaceColor','r');
plot(minBB,Data_withoutoffset(minBB),'rs','MarkerFaceColor','b');
ax = axis; axis([ax(1:2) -11 11])
title('Oscilloskop Signal')
xlabel('Samples'); ylabel('Voltage(mV)')
legend('Signal','Max','Min');

/////////////////////////////////////////////// ////

我在信号开始时切了一点,最后确保我有正确的信号。

我还可以给你我的第一个数据集(我可以通过邮件发送),因为图片只是理论上信号的样子。实际上噪音更大。

以下是实际数据的图表

感谢您的帮助

1 个答案:

答案 0 :(得分:-1)

看起来潜在的解决方案可能有两个步骤。

<强>过滤 由于噪声看起来很尖锐,您可以使用低通滤波器去除大部分峰值。调整滤波器以专门针对出现的噪声频率是值得的。看起来你现在正在使用名义价值。

dV或d | dV |阈值 通过查看信号的数值导数,可以更容易地识别与快速转换的开始/结束相关联的时间。您可以在Matlab中使用dV = diff(V)执行此操作。看起来你的点也在高加速度的区域(噪音实际上并没有太大地伤害这个度量)。您可以使用d2V = diff(dV)dadV = diff(abs(dV))来查看加速度/幅度,您可能会发现所有关键点都在此图中清晰显示。