信号与正弦曲线拟合(以及如何找出相移?)

25日视图(30天)
这就跟你问声好!
我有一个温度信号(轴)组成的764这样的价值观
和时间(x轴)的这个信号是一个非周期的。是这样的——每一个观测点
....
我有时间和温度数据(附件)。谁能请建议我如何适应这个信号为正弦曲线和振幅,意思是,和相移吗?任何反馈将不胜感激!
5个评论
约翰D 'Errico
约翰D 'Errico 2023年3月10日
,甚至没有一个远程固定频率信号。所以没有常数相移,可以估计。试图这么做是毫无意义的。

登录置评。

接受的答案

明星黾
明星黾 2023年3月10日
我最初要看到如果我能得到这个适合使用 fminsearch ,然而我不是猜测正确的初始参数估计,它不会返回一个可接受的结果。
所以我去了 遗传算法 ,因为它通常可以解决这些问题当我不能,它成功了(在我看来,无论如何)。
这里是结果
LD =负载(websave (“SignalFitting”,“//www.tatmou.com/matlabcentral/answers/uploaded_files/1320795/SignalFitting.mat”));
每= LD.Period;
Temp = LD.Average_Temp;
DP = diff (/);
(瞧,嗨)=边界(DP);
(h m s) = hms(平均(DP));
统计=[罗你好意思(DP)中位数(DP)模式(DP)]
统计=1×5时间数组
24:00:00 3456:00:00 441:16:44 384:00:00 192:00:00
TT1 =时间表(每、临时);
LenTT1 =大小(TT1, 1);
Ts =小时(h);
TT1r =调整时间(TT1,“普通”,“线性”,“步伐”小时(h))%重新取样数据统一的采样频率
TT1r =765×1的时间表
临时 __________ _____ 1984-05-0212.8791984-05-2011.9921984-06-0714.5591984-06-2621.8921984-07-1421.1111984-08-0120.331984-08-2019.5491984-09-0718.7681984-09-2617.1751984-10-1414.0691984-11-0114.3881984-11-209.1251984-12-085.2611984-12-262.62381985-01-14-0.0134771985-02-01-1.5444
实现y =天(TT1r.Per,“dayofyear”);
LY = eomday(年(TT1.Per), 2);
机灵LYv = LY (diff) < 1) -28;
YRv = [0;机灵cumsum (diff) < 1)];
马克斯(YRv)
ans = 38
机灵CDOY = + 365.25 * YRv;
[dlo,济]=边界(CDOY)
dlo = 123
济= 1.4161 e + 04
dCOD =济- dlo
dCOD = 1.4038 e + 04
[dlo,济]=边界(TT1r.Per)
dlo =datetime
1984-05-02
济=datetime
2022-10-08
dp =(济- dlo) / 24
dp =持续时间
14038:30:00
情节(CDOY TT1r.Temp)
网格
包含(“累积天”)
ylabel (“临时”)
L =大小(TT1r, 1);
Fs = 1 / h;%采样频率(周期/小时)
Fn = f / 2;
NFFT = 2 ^ nextpow2 (L);
FT_Temp = fft ((TT1r.Temp-mean (TT1r.Temp)。*损害(L), NFFT) / L;
阵线= linspace (0, 1, NFFT / 2 + 1) * Fn;
4 = 1:元素个数(艘);
(pks, loc) = findpeaks (abs (FT_Temp (Iv)) * 2,“MinPeakProminence”,2.5)
繁荣正义党= 4.7925
loc = 53
pkfreq =阵线(loc)%周期/小时
pkfreq = 1.1515 e-04
pkper = 1 / pkfreq%小时/循环
pkper = 8.6843 e + 03
pkper_d = pkper / 24%天/周期
pkper_d = 361.8462
情节(阵线、abs (FT_Temp (Iv)) * 2)
网格
包含(的频率(周期/小时))
ylabel (“级”)
e + 01 00:00:49.238 %运行时间:4.923885300000001
%
%的健身价值融合= 102.6832
%几代人= 163
%
%速率常数:
%θ(1)= 9.42146
%θ(2)= 5.05100
%θ(3)= 1.30257
%θ(4)= 14.16108
%
%
e + 01 00:00:30.358 %运行时间:3.035811500000000
%
%的健身价值融合= 102.6837
%几代人= 132
%
%速率常数:
%θ(1)= 9.42147
%θ(2)= 1.05100
%θ(3)= 3.30268
%θ(4)= 14.16108
%
e + 01 00:00:54.283 %运行时间:5.428350700000000
%
%的健身价值融合= 102.6837
%几代人= 177
%
%速率常数:
%θ(1)= 9.42146
%θ(2)= 6.94900
%θ(3)= 11.19732
%θ(4)= 14.16109
objfcn = @ (b, b t)(1)。*罪(2 *π* t * b(2) + 2 *π* b (3)) + b (4);
% B0 =[马克斯(TT1r.Temp)分钟(TT1r.Temp);pkfreq / (365);1;意思是(TT1r.Temp)]
% B0 = (9.4;1;3;14);
% [B, fval] = fminsearch (@ (B)规范(TT1r。CDOY Temp - objfcn (b)), B0)
B = (9.42147;1.051;3.303;14.161);
TempFit = objfcn (B, CDOY);
情节(TT1r。每,TT1r.Temp,“:”,“DisplayName的”,“数据”)
持有
情节(TT1r。每,临时Fit,“- r”,“DisplayName的”,“回归”)
持有
网格
包含(“每”)
ylabel (“临时”)
xlim ([datetime (1985、03 01) datetime (1988、03 01)))
情节(TT1r。每,TT1r.Temp,“:”,“DisplayName的”,“数据”)
持有
情节(TT1r。每,临时Fit,“- r”,“DisplayName的”,“回归”)
持有
网格
包含(“每”)
ylabel (“临时”)
遗传算法 函数提出了几个类似的结果,尽管一些参数(特别是频率参数 “b (2)” 和相位参数, “b (3)” )是不同的。这就意味着没有独特的结果对他们来说,这是完全可以接受的。
我听从你来解释这些结果。
8的评论
明星黾
明星黾 2023年3月15日
当前数据不适合任何生理计算,由于采样时间间隔不合适。他们不需要常规,然而理想情况下应每1 - 3小时。当前采样间隔可以相差一天,所以任何潮汐变化将“别名”和不正确。
如果你有潮汐的新数据,我愿意看看我可以帮助他们。
我刚才回复你后!(备案,它没有与这个帖子的内容,因此没有隐藏的信息。我提到这个是因为有时人们共享信息离线和一个人,这是不公平的,别人谁可以帮助解决一个特定问题)。

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!