How to fix a shift issue after taking hamonic mean?

1 Ansicht (letzte 30 Tage)
Nisar Ahmed
Nisar Ahmed am 24 Aug. 2022
Kommentiert: Mathieu NOE am 12 Sep. 2022
Hi everyone,
In the figure below, the red curve (Mdry) is the harmonic average of blue curve Md by using moving mean of 4 values. Due to harmic mean the red peak has been shifted a bit as shown in figure. How can I fix it? I have attached the data of both Md and Mdry. I am using following code to create a haromic mean (in such a way that the length of both Md and Mdry should remain same -- at the end).
Mdry = zeros(size(Md));
for k=1:length(Md)-3
Mdry(k)=harmmean(Md(k:k+3));
end
k = length(Md)-2;
Mdry(k) = harmmean(Md(k:k+2));
k = length(Md)-1;
Mdry(k) = harmmean(Md(k:k+1));
k = length(Md);
Mdry(k) = Md(k);

Akzeptierte Antwort

Mathieu NOE
Mathieu NOE am 2 Sep. 2022
hello
is there a reason why the harmonic averaging is needed
here I compared it with a standard smoothing function with gaussain window (odd length) - yellow trace
seems to get similar results in terms of smoothing while better keeping peaks positions
Mdry = zeros(size(Md));
for k=1:length(Md)-3
Mdry(k)=my_harmmean(Md(k:k+3));
end
k = length(Md)-2;
Mdry(k) = my_harmmean(Md(k:k+2));
k = length(Md)-1;
Mdry(k) = my_harmmean(Md(k:k+1));
k = length(Md);
Mdry(k) = Md(k);
% my suggestion
Mdry2 = smoothdata(Md,'gaussian',7); % NB : odd window length to keep peak position closest to original position
plot(Md)
hold on
plot(Mdry)
plot(Mdry2)
hold off
function out = my_harmmean(in)
out = numel(in)./(sum(1./in));
end
  4 Kommentare
Nisar Ahmed
Nisar Ahmed am 12 Sep. 2022
Bearbeitet: Nisar Ahmed am 12 Sep. 2022
@Mathieu NOE thanks, I have to check it and then respond you... I have been badly involved some other assigmenets. that's why delayed.
Since I got answer after many dats of posting so become busy in other stuff
Mathieu NOE
Mathieu NOE am 12 Sep. 2022
ok - no problem; take your time !
all the best

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by