Find mean of steps in broken signal

3 Ansichten (letzte 30 Tage)
Konvictus177
Konvictus177 am 14 Aug. 2023
Kommentiert: Star Strider am 16 Aug. 2023
Hi,
I have a partially broken signal with NaNs and 5 steps as indicated below.
How can I find the mean level of each of the 5 steps?
The signal is attached.
The signal looks like the following:
Thanks.

Akzeptierte Antwort

Star Strider
Star Strider am 14 Aug. 2023
One approach —
LD = load('y.mat');
y = LD.y;
x = 0:numel(y)-1;
Lv = islocalmax(y>25, 'FlatSelection','all');
start = strfind(Lv, [0 1]);
stop = strfind(Lv, [1 0]);
for k = 1:numel(start)
ymean(k,:) = mean(y(start(k) : stop(k)), 'omitnan');
xmean(k,:) = mean(x(start(k) : stop(k)), 'omitnan');
end
Flat_Means = table(xmean, ymean, 'VariableNames',{'X Centre','Y Mean'})
Flat_Means = 9×2 table
X Centre Y Mean ________ ______ 1618 28.811 1651 30.648 1691 26.499 1725 28.549 1789 35.506 1828 33.727 1841 33.103 1876 33.305 1939 39.992
figure
plot(x, y)
hold on
plot(x(Lv), y(Lv), '.r')
hold off
grid
ylim([min(ylim) 70])
text(xmean, ymean, compose('\\mu = %.2f \\rightarrow',ymean), 'Horiz','right', 'Vert','middle', 'Rotation',-80)
.
  4 Kommentare
Konvictus177
Konvictus177 am 16 Aug. 2023
@Star Strider The updated code works perfect! Thank you very much!
Star Strider
Star Strider am 16 Aug. 2023
As always, my pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by