
fit a sine wave to a set of data points
    4 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I have the dataset attached and the code below to try and fit a wave to the data. Im getting the following error which I can't get past:
yu = max(Qe_mean);
yl = min(Qe_mean);
yr = (yu-yl);                % Range of ‘y’
yz = Qe_mean-yu+(yr/2);
zx = time(yz .* circshift(yz,[0 1]) <= 0); % Find zero-crossings
per = 100;                   % Estimate period
ym = mean(Qe_mean);                % Estimate offset
fit = @(b,x)  b(1).*(sin(2*pi*x./per + 2*pi/b(2))) + b(3);      % Function to fit
fcn = @(b) sum((fit(b,x) - y).^2);                              % Least-Squares cost function
s = fminsearch(fcn, [yr;  -1;  ym])                       % Minimise Least-Squares                   % Minimise Least-Squares
xp = linspace(min(x),max(x),per_in);
plot(x,y,'b',  xp,fit(s,xp), 'r')
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the
right side is 1-by-100.
Error in fminsearch (line 201)
fv(:,1) = funfcn(x,varargin{:});
0 件のコメント
回答 (1 件)
  Sam Chak
      
      
 2022 年 5 月 13 日
        Hi @C.G.
I've got this. What do you get?

General model Sin8:
     f(x) =  
                    a1*sin(b1*x+c1) + a2*sin(b2*x+c2) + a3*sin(b3*x+c3) + 
                    a4*sin(b4*x+c4) + a5*sin(b5*x+c5) + a6*sin(b6*x+c6) + 
                    a7*sin(b7*x+c7) + a8*sin(b8*x+c8)
Coefficients (with 95% confidence bounds):
       a1 =       0.603  (-1.979, 3.185)
       b1 =     0.03167  (-0.04371, 0.1071)
       c1 =    -0.08663  (-13.79, 13.61)
       a2 =      0.0364  (-0.02684, 0.09964)
       b2 =      0.3738  (0.2646, 0.483)
       c2 =     -0.5175  (-6.054, 5.019)
       a3 =     0.05621  (-0.133, 0.2455)
       b3 =      0.1469  (0.02797, 0.2658)
       c3 =       4.653  (-1.893, 11.2)
       a4 =     0.03751  (-0.0287, 0.1037)
       b4 =      0.4343  (0.3727, 0.496)
       c4 =       2.639  (-0.5437, 5.822)
       a5 =     0.04328  (-0.004699, 0.09126)
       b5 =      0.3131  (0.267, 0.3593)
       c5 =       2.147  (-0.02915, 4.323)
       a6 =      0.2174  (-4.843, 5.277)
       b6 =     0.05691  (-0.397, 0.5108)
       c6 =      0.4076  (-29.88, 30.69)
       a7 =     0.02892  (0.01865, 0.03919)
       b7 =      0.5653  (0.5512, 0.5793)
       c7 =      0.3736  (-0.4235, 1.171)
       a8 =     0.02562  (0.01612, 0.03511)
       b8 =       1.103  (1.089, 1.116)
       c8 =        1.03  (0.2538, 1.805)
Goodness of fit:
  SSE: 0.08528
  R-square: 0.9849
  Adjusted R-square: 0.9804
  RMSE: 0.0335
0 件のコメント
参考
カテゴリ
				Help Center および File Exchange で Multirate Signal Processing についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

