How to get a transfer function for 2D data (curve to curve)

3 ビュー (過去 30 日間)
Basem Rajjoub
Basem Rajjoub 2020 年 4 月 16 日
編集済み: Basem Rajjoub 2020 年 4 月 20 日
Hello everyone,
I need to get a transfer function/method to convert the coordinates from the blue curve to the green one.
This function will be used later on to transfer other curves similar to the blue one. I would be happy to get suggestions on how to solve this with matlab; are there any ready to use functions? Thanks in advance!
  7 件のコメント
Ameer Hamza
Ameer Hamza 2020 年 4 月 17 日
If there is no definite rule to plot these two curves, then how can we make a reliable mapping from one curve to another?
Basem Rajjoub
Basem Rajjoub 2020 年 4 月 17 日
The rule is simply using the given points or the equations within the given range.

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

採用された回答

Basem Rajjoub
Basem Rajjoub 2020 年 4 月 19 日
編集済み: Basem Rajjoub 2020 年 4 月 20 日
I found a very good soulution:
p_corr is the function used to convert the blue curve to the green one.
x = 0:0.0025:0.065;
y_green = 40000*x; % equation of first line
y_blue = -120000*x.^2+23500*x; % equation of second line
% getting reverse polynomials
p_green = polyfit(y_green,x,2);
p_blue = polyfit(y_blue,x,3);
% getting correlation polynomial
x1 =0:100:1200;
y_blue = polyval(p_blue,x1);
y_green = polyval(p_green,x1);
p_corr = polyfit(y_blue,y_green,3); %correlation polynomial used to convert blur curve x values
y_corr= polyval(p_corr,y_blue);
figure
hold on
plot(y_green,x1)
plot(y_blue,x1)
plot(x_corr,x1,'o')
hold off

その他の回答 (1 件)

Ameer Hamza
Ameer Hamza 2020 年 4 月 18 日
If you know the equation of both lines, you can use fsolve to map x-values from one curve to the other curve
y1 = @(x) 40000*x; % equation of first line
y2 = @(x) -120000*x.^2+23500*x; % equation of second line
x2 = 0:0.01:0.1; % x-values for point on y2
x1 = zeros(size(x2)); % x-values for point on y1 corresponding to x-values on y2
for i=1:numel(x1)
x1(i) = fsolve(@(x) y1(x) - y2(x2(i)), 0);
end
x = linspace(0,0.1,100);
figure;
hold on;
plot(x, y1(x));
plot(x, y2(x));
plot(x1, y1(x1), '+');
plot(x2, y2(x2), '+');
plot([x1; x2], [y1(x1); y2(x2)], '--')

カテゴリ

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

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by