Wpis z mikrobloga

Mirki i Mirabelki czy ktoś z was wie może, jak mierzyć długość na wykresie ? kolejno by było to zapisywane do pliku ?
Totalnie nie mam pomysłu jaka funkcją można to robić, wykres składa się z poszczególnych odstępów mniejszych lub większych, moim zadaniem jest wychwycenie największej szczeliny i zmierzenia jej długości czyli potrzeba np położenia piku w którym wykres się kończy(zaczyna szczelina) i następnie piku w którym zaczyna się kolejy element(kończy szczelina).
Myślałem nad Transformatą Fouriera ale nie wiem czy to wgl się do tego nada? ktoś ma jakieś pomysły albo wie jak zrobić coś takiego ? Przeskanować wykres.

#matlab #wykres #programowanie #studbaza #naukaprogramowania
  • 9
@miud: a za jej pomocą jestem w stanie wychwycić tą przerwę największą w sposób automatyczny ? bądź pół że zaznaczam na jakim zakresie ma szukać ? bo nie ukrywam że interesuje mnie w tym momencie dokładność by była szukana zawsze ta konkrenta
@miud: co do 'cumsum' może być okej ale jesteśmy w stanie wyznaczyć tam przedział który nas interesuje ? wiadomka badamy długość na odpowiedniej wysokości np 0 i tniemy takim sposobem cały wykres ale wtedy nie będzie to wychwytywało wszystkich jak leci długości ?
@malpa982: Po pierwsze to chciałeś klikania. To oczywiście da się zrobić:

https://www.mathworks.com/help/matlab/ref/ginput.html

Po drugie, jeśli zawsze to tak wygląda to w zasadzie mógłbyś wyznaczyć prostą (np. przez średnią, ew. ruchomą) i badać w jakich sekundach wykres ją przetnie. Inna rzecz to właśnie cumsum, który będzie w zasadzie liczył całkę z tego. Największy bąbel będzie akurat tam gdzie cumsum osiągnie maksimum. Powinieneś dostać punkt (czas, ok. 0).
@malpa982: Jak dla mnie jedno z łatwiejszych sposobów to właśnie:

z = double(Pomiary > średni_pomiar)
Teraz mamy ciągi 0 i 1 w typie double.

Robimy własnego cumsum'a. Czyli pętla for z resetowaniem jeśli jest zero.

Suma = 0*Pomiary; % robię wektor o tej samej długości co Pomiarów
Suma(1)=Pomiary(1);
for k=2:numel(Pomiary)
if(Pomiary(k)==0)
Suma(k)=0;
continue
end
Suma(k)=Pomiary(k) + Suma(k-1)
end

Potem znależć maxa i miejsce gdzie zaczyna się jego ciąg.