How to fit curves in Simulink and still generate the code?
I have a model of a sensor in Simulink, that returns vectors "Pos_x" and "Pos_y". Each vector has size of 20x1, whose values change every one step time (1ms).
I am trying to calculate the coeffecients of the 3rd degree Polynomial y(x) = p1*x^3 + p2*x^2 + p3*x + p4 in Simulink, that fits the data.
I did not find any block in simulink that calculates the coeffecients, so I used a simple Matlab function
function [p1, p2, p3, p4] = fcn(x,y)
% f(x) = p1*x^3 + p2*x^2 + p3*x + p4
f = fit(x', y', 'Poly3'); % I have also tried "polyfit"
p1 = f.p1;
p2 = f.p2;
p3 = f.p3;
p4 = f.p4;
end
but I get the error: Function 'fit' not supported for code generation.
1- so back to my qustion, How to fit curves in Simulink and still generate the code?
2- I am also open to any other suggestion

 Akzeptierte Antwort

Jonas
Jonas am 31 Aug. 2021

0 Stimmen

If you have the DSP Systems Toolbox you can use the Least Squares Polynomial Fit block.
Standard Simulink does not have an alternative as far as I can see. Unless you implement a curve fitting algorithm yourself in a MATLAB Function block. If it is just for testing some stuff the DSP Systems Toolbox seems the alternative.

2 Kommentare

I have found the block but I could not use it, because it accepts only one input, and in my case both X and Y should be Inputs, soI have tried to manipulate the block, so that it accepts 2 inputs but it did not work for me.
Thanks for the idea Jonas. finally I could manipulate the Block to adapt to my case.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Get Started with Simulink finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by