フィルターのクリア

anonymous function + IF + fitnlm = possible?

3 ビュー (過去 30 日間)
wesleynotwise
wesleynotwise 2017 年 6 月 5 日
コメント済み: Star Strider 2017 年 6 月 5 日
Hello. Is it possible to have an anonymous function combined with an If statement in a non-regression function? something like this --->
tbl = table(x1, x2, x3, y);
if table.x1 < 30
modelfun1 = @(b,x)(...Equation (1)...);
b0 = [1 1 1 ...];
else % table.x1 > 30
modelfun2 = @(b,x)(...Equation (2)...);
b0 = [1 1 1...];
mdl1 = fitnlm(tbl, modelfun1, b0)
mdl2 = fitnlm(tbl, modelfun2, b0)
end

採用された回答

Star Strider
Star Strider 2017 年 6 月 5 日
Not an if statement. However you can use a form of ‘logical indexing’ to do essentially the same thing.
Example
x = linspace(0, 60);
b = [3 11];
modelfun = @(b,x) (x<=30).*(b(1).*x/10 - b(2)) + (x>30).*(b(1).*sin(x.*b(2)));
figure(1)
plot(x, modelfun(b,x))
grid
Logical vectors evaluate as (0,1) numeric values in calculations.
  4 件のコメント
wesleynotwise
wesleynotwise 2017 年 6 月 5 日
Noted. Cheers.
Star Strider
Star Strider 2017 年 6 月 5 日
Cheers.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by