Function returning matrix instead of vector

3 ビュー (過去 30 日間)
Travis Craddock
Travis Craddock 2020 年 6 月 17 日
回答済み: Rafael Hernandez-Walls 2020 年 6 月 17 日
Hello,
I have made a function for use in least squares curve fitting of the form:
f=@(xf,xdata)xf(1)*(xf(4)+((xf(2)-xdata)/(xf(3)/2))).^2/(1+((xf(2)-xdata)/(xf(3)/2)).^2)
xf should have 4 parameters
When I test the function with
f(x0f,xdata)
with x0f = [1.0000, 462.7580, 1.8007, 0], and xdata a 15x1 column vector I get a 15x15 matrix as output, when I expect a 15x1 column vector. I believe the issue is that the f function has xdata squared (.^2) both in the numerator and denominator, but I don't know how to circumvent this as there is no way to isolate xdata. Any help is appreciated.
  1 件のコメント
Travis Craddock
Travis Craddock 2020 年 6 月 17 日
P.S. Entering this function into lsqcurvefit results in an error "Function value and YDATA sizes are not equal."

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

採用された回答

KSSV
KSSV 2020 年 6 月 17 日
編集済み: KSSV 2020 年 6 月 17 日
Read about element by element operations.
Repalce * with .*, / with ./
f=@(xf,xdata)xf(1)*(xf(4)+((xf(2)-xdata)./(xf(3)/2))).^2./(1+((xf(2)-xdata)./(xf(3)/2)).^2) ;

その他の回答 (1 件)

Rafael Hernandez-Walls
Rafael Hernandez-Walls 2020 年 6 月 17 日
f=@(xf,xdata)xf(1)*(xf(4)+((xf(2)-xdata)/(xf(3)/2))).^2./(1+((xf(2)-xdata)/(xf(3)/2)).^2)

カテゴリ

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