Making the Trend Equal??

조회 수: 1 (최근 30일)
Kang Min Kim
Kang Min Kim 2019년 12월 25일
댓글: Kang Min Kim 2019년 12월 30일
Line two is upside down as compared to line one
And as shown above,
I want to make Line 2 the same as Line 1.
The picture above is my guess.
Do you have any mathematical methods or other methods?
My English is not good sorry.

채택된 답변

Image Analyst
Image Analyst 2019년 12월 25일
You can fit a line through curve 1. Then subtract the max of curve two and add the fitted line to it.
coefficients = polyfit(x1, y1, 1); % Fit a line.
% Get the line at locations where you have x2.
line1 = polyval(coefficients, x2);
% Find the max of curve 2.
y2max = max(y2);
% Make output curve (curve 3)
y3 = y2 - y2max + line1; % Tilt curve 2 upwards at the slant of curve 1
If you need more help, please attach the two curves in a .mat file with the paper clip icon.
  댓글 수: 6
Image Analyst
Image Analyst 2019년 12월 25일
Do you mean something like this:
clc; % Clear the command window.
clear all; % Including global variables.
close all force; % Close all figures (except those of imtool.)
workspace; % Make sure the workspace panel is showing.
filebrowser;
format short g;
format compact;
fontSize = 14;
t = 0:300;
dailyFluct = gallery('normaldata',size(t),2);
sdata = cumsum(dailyFluct) + 20 + t/100;
figure
subplot(1, 3, 1);
plot(t, sdata, 'b-', 'LineWidth', 2); % Plot original y data
% legend('Original Data','Location','northwest');
grid on;
xlabel('Time (days)');
ylabel('data');
title('Original data', 'FontSize', fontSize);
coefficients = polyfit(t, sdata, 1); % Fit a line.
% Get the line at locations where you have x2.
line1 = polyval(coefficients, t);
hold on;
plot(t, line1, 'r-', 'LineWidth', 2); % Plot line
legend('original y', 'Line through y');
% Find the max of curve 1.
y1min = sdata(1);
% Make the upside down data.
y2 = -sdata;
subplot(1, 3, 2);
plot(t, sdata, 'b-', 'LineWidth', 2); % Plot original y data
hold on;
plot(t, line1, 'r-', 'LineWidth', 2); % Plot line
plot(t, y2, 'c-', 'LineWidth', 2); % Plot upside down (negative) data
grid on;
title('Upside down data', 'FontSize', fontSize);
% Shift y2 upwards so that the first points start at the same y location.
y2 = y2 + 2 * y1min;
plot(t, y2, 'm-', 'LineWidth', 2); % Plot line
legend('original y', 'Line through y', 'Negative y', 'Negative y shifted upwards');
% Make output curve (curve 3)
y3 = 2 * line1 + y2 - 2 *y1min; % Tilt curve 2 upwards at the slant of curve 1
subplot(1, 3, 3);
plot(t, sdata, 'b-', 'LineWidth', 2); % Plot original y data
hold on;
plot(t, line1, 'r-', 'LineWidth', 2); % Plot line
plot(t, y3, 'm-', 'LineWidth', 2);
grid on;
title('Both original and Upside down data', 'FontSize', fontSize);
legend('original y', 'Line through y', 'y3, tilted upwards');
0000 Screenshot.png
Kang Min Kim
Kang Min Kim 2019년 12월 30일
thank you for your answer
I want to replace line through y with the moving average(30days) of original y.
I would appreciate it

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by