フィルターのクリア

How do I perform a sin^2 or a cos^2 fit for my data?

4 ビュー (過去 30 日間)
Akshay Arvind
Akshay Arvind 2024 年 5 月 23 日
コメント済み: Star Strider 2024 年 5 月 23 日
I have the following x data and y data:
x = [0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180]
y = [880,1200,1900,2700,3300,3600,3000,2100,1300,860,1200,1900,2700,3150,3300,2900,2100,1300,860]
How do I perform a cos^2 (x) or a sin^2 (x) fit for the above data?

採用された回答

Star Strider
Star Strider 2024 年 5 月 23 日
Perhaps this —
x = [0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180];
y = [880,1200,1900,2700,3300,3600,3000,2100,1300,860,1200,1900,2700,3150,3300,2900,2100,1300,860];
LvLocs = islocalmax(y, 'MinProminence',mean(y));
xlocs = x(LvLocs)
xlocs = 1x2
50 140
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
freq = 1/mean(diff(xlocs))
freq = 0.0111
[lb,ub] = bounds(y)
lb = 860
ub = 3600
fcn = @(b,x) b(1).*sin(2*pi*x*b(2)).^2 + b(3);
[B,fv] = fminsearch(@(b)norm(y - fcn(b,x)), rand(3,1))
B = 3x1
1.0e+03 * 2.5314 0.0006 0.9046
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
fv = 371.2053
txt = sprintf('$f(x) = %.2f \\cdot sin(2 \\pi x %.3f)^2 %+.3f$', B)
txt = '$f(x) = 2531.45 \cdot sin(2 \pi x 0.595)^2 +904.574$'
figure
plot(x, y)
hold on
plot(x, fcn(B,x), '-r')
hold off
grid
xlabel('X')
ylabel('Y')
text(50, 3750, txt, 'Interpreter','LaTeX')
.
  6 件のコメント
Akshay Arvind
Akshay Arvind 2024 年 5 月 23 日
I see, thanks very much! I appreciate the help.
Star Strider
Star Strider 2024 年 5 月 23 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGet Started with Curve Fitting Toolbox についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by