Offset removal from a sinusoidal wave

조회 수: 12 (최근 30일)
Mohammad Zulqarnain
Mohammad Zulqarnain 2021년 2월 18일
댓글: Star Strider 2021년 2월 19일
Hello Everyone,
I have an input waveform as shown in the figure in blue. It is a sinusoidal wave but due to different offests during positive and negative half cycles, it looks distorted. Basically, there is a big jump whenever signal changes direction from positive to negative and vice versa. So, I want to remove offsets from individual half cycles. I want an output which looks as red in the figure, which is just shifting of top and bottom parts of the waveform, taking zero as the baseline, excluding the big jumps. I have attached the input csv file as well. If anyone has any idea, how to approach it, please let me know, I will be thankful.

채택된 답변

Star Strider
Star Strider 2021년 2월 18일
Try this:
D1 = readmatrix('Output.csv');
x = 1:numel(D1);
D1HL = min(D1(D1>0));
D1HI = (D1>D1HL); % Logical Index
D1LL = max(D1(D1<0));
D1LI = (D1<D1LL); % Logical Index
minH = zeros(size(D1))+min(D1(D1HI));
maxL = zeros(size(D1))+max(D1(D1LI));
D1C = zeros(size(D1));
D1C(D1HI) = D1(D1HI)-minH(D1HI);
D1C(D1LI) = D1(D1LI)-maxL(D1LI);
figure
plot(x, D1C)
grid
xlim([0 100]) % Delete Or Change To See Larger (Or Entire) Vector
producing:
I plotted the points as well as the connecting lines to demonstrate the continuity. Change the line style to '-' to plot it without the points.
.
  댓글 수: 4
Mohammad Zulqarnain
Mohammad Zulqarnain 2021년 2월 19일
Thank you very much Star Strider. That works perfectly.
Star Strider
Star Strider 2021년 2월 19일
As always, my pleasure!

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

추가 답변 (1개)

darova
darova 2021년 2월 18일
I have an idea
clc,clear
x = linspace(0,20,100);
y = sin(x);
ind = -0.5<y & y<0.5;
x1 = x(~ind);
y1 = y(~ind);
y1 = y1 - sign(y1)*0.3;
plot(x,y)
hold on
plot(x1,y1,'.r')
hold off

카테고리

Help CenterFile Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by