日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰

發(fā)布時間:2023/12/20 循环神经网络 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

clc,clear,close all;fclose all;

datapath = 'E:\done2\';

datFiles = dir([datapath, '*.txt']);

numFiles = length(datFiles);

data1 = [];

for i = 1:numFiles

data = load([datapath,datFiles(i).name]);

data1 = [data1,data];

end

x=1:350;? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???% % 一共130個

[b,a]=butter(6,1/30/0.5,'low');? ?? ?? ?% % 想做低通濾波,讓數(shù)據(jù)更平穩(wěn)一些

% % 按你說的,如果間距不大,就當(dāng)成一個峰

datalow=filtfilt(b,a,data1);? ?? ?? ?? ? % % 做低通濾波

[min_datalow,~]=min(datalow);? ?? ?? ? % % 尋找各列的最小值

datalow=datalow-min_datalow;? ?? ?? ???% % 以數(shù)據(jù)最小值為基準(zhǔn)

datalow(1,:)=datalow(2,:)+0.1;? ?? ?? ?? ???% % 為了克服數(shù)據(jù)端點的影響

datalow(end,:)=datalow(end-1,:)+0.1;? ?? ???% % 即使如此,兩端依然可能受到影響

subplot(2,1,1),hold on;

[min_data1,~]=min(data1);? ?? ?? ? % % 尋找各列的最小值

plot(x,data1-min(data1),'-g','linewidth',2);? ?? ?% % 原始數(shù)據(jù)

plot(x,datalow,'-r','linewidth',1);? ?? ?? ?? ? % % 低通濾波數(shù)據(jù)

peaks_pick_all = [];? ?? ?? ?? ?? ?? ?? ?% %用于存儲分出的五個峰的矩陣

for i=1:numFiles? ?? ?? ?? ?? ?? ?? ?? ? % % 循環(huán)遍歷每個峰

data4everpeaks = datalow(:,i);

[~,locs]=findpeaks(-data4everpeaks);

for ii=1:length(locs)-1;? ?? ?? ?? ? % % 這個地方有點意思,注意是否要減一? ?? ?? ?? ?% % 循環(huán)遍歷每個峰

temp=nan(size(data4everpeaks));? ?? ?% % 截取每一段峰

temp(locs(ii):locs(ii+1))=data4everpeaks(locs(ii):locs(ii+1));

idx=find(~isnan(temp));

ft=fittype('gauss1');? ?? ?? ?? ?? ?? ?? ???% % 用鐘型線去做擬合

% % 當(dāng)然可以選擇其他擬合方式

fitobject=fit(idx,temp(idx),ft);? ?? ?? ?? ?% % 擬合并畫圖

vvv=fitobject.a1*exp(-((x-fitobject.b1)./fitobject.c1).^2); % % 存儲每個峰的信息

peaks_pick_all=[peaks_pick_all,vvv'];

plot(fitobject.a1*exp(-((x-fitobject.b1)./fitobject.c1).^2),'-b','linewidth',1)

end

end

[max_peaks_pick_all,peaks_position]=max(peaks_pick_all);

peaks_area = trapz(peaks_pick_all);? ?? ?? ?? ?% % 求解分出的峰的峰面積

aaa = [peaks_pick_all(:,1)+peaks_pick_all(:,2)+peaks_pick_all(:,3)+peaks_pick_all(:,4)+peaks_pick_all(:,5)]??% % 擬合峰的疊加

subplot(2,1,2)

plot(aaa);

總結(jié)

以上是生活随笔為你收集整理的matlab如何实现分峰,分峰拟合,将一条曲线分为单独的小峰的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。