我是matlab编程的新手。其实我已经在mathwork网站上问了这个问题,但我仍然没有得到答案,所以也许我可以在这里得到它。 我正在尝试进行峰值分析,以找到雨水流量的峰值流量。这是我的代码:
%% Peak flow analysis
% define data which are used for analysis
Date=finalCSVnew{:,1};
Flow=finalCSVnew{:,7};
figure(2);
[pks,locs]=findpeaks(Flow,Date,'MinPeakProminence',1,'MinPeakDistance',1);
findpeaks(Flow,Date,'MinPeakProminence',1,'MinPeakDistance',1);
text(locs+.02,pks,num2str((1:numel(pks))'));
xlabel('Date and Time');
ylabel('Flow [m3/h]');
title('Find All Peak Flows');
datacursormode on
我设法绘制峰值流量,并找到有关pks和locs的详细信息。在这里,每个事件应包含一个峰值流量。所以在我的情况下(基于附图)我应该有16个事件。但是,事件1和事件2中存在重复值,我想删除其中一个,但我对如何操作感到困惑。另外,我试着找到用于计算网站中每个事件持续时间的教程,但我一无所获。我想知道如何根据我得到的峰值流量数据计算持续时间(可能以分钟为单位),并删除绘图中的峰值和包含重复数据的pks数据。有可能吗?请你帮助我好吗?非常感谢你的帮助。peak flow events
答案 0 :(得分:0)
对于重复值,您可以使用for (i=1; i lte ArrayLen(yourArray); i++){
processStruct(yourArray[i],i);
}
函数查找相同的值并将其删除。
unique
https://au.mathworks.com/help/matlab/ref/unique.html
提供有关您要衡量的持续时间的更多详细信息。您想测量峰值流量的持续时间吗?或者是导致峰值的整条曲线?