-
Data: 2013-07-06 10:02:30
Temat: Re: program do symulacji obróbki audio ?
Od: Miroslaw Kwasniak <m...@i...zind.ikem.pwr.wroc.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Michał Lankosz <m...@t...pl> wrote:
> największa próbka z 10-ciu kolejnych (pętla for, może da się ją ominąć?):
> data2 = max(data1(i:i+10));
i:i+10 to też pętla ;) Ale ukryta - taki zabieg nazywamy w octave/matlabie
wektoryzacją zagadnienia.
> liczby rozdzielone dwukropkiem oznaczają przedział
> tylko że trzeba w pętli ten wektor sklejać, tzn za każdym obiegiem pętli
> doklejać kolejną wartość, coś w rodzaju:
> data3 = [];
> for i=1:10:data_length % i inkementuje się co 10!
> data2 = max(data1(i:i+10));
> data3 = [data3, data2];
> endfor
> no i teraz już ten filter.
Modyfikacje Twojego rozwiązania:
1) Polecenia "data3 = []" i "data3 = [data3, data2]" to wygodny zapis dla
nieznanej długości data3, ale kosztują: w każym obiegu pętli wykonujesz
dodatkowo niepotrzebne operacje:
-- utwórz nową tablicę data3 o długości length(data3)+1
-- skopiuj starą do nowej
-- skasuj starą
Remedium: prealokacja tablicy
L=floor(length(data1)/10);
data3=zeros(1,L);
for i=1:L
data3[i]= max(data1((i-1)*10+(1:10)))
endfor
2) Na ogół 10<L, więc lepiej zmienić kolejność jawnej i niejawnej pętli,
jawne (czyli niezwektoryzowane) wykonują się wolniej
Remedium poniżej (przy założeniu, że data1 jest wektorem kolumnowym);
ii=1:10:length(data1);
data3=data1(ii).';
for i=1:9
data3=max([ data3; data1(i+ii).' ]);
endfor
3) Obie pętle można w tym zagadnienu zwektoryzować, ale tu opłacalność
pewnie żadna, a czytelność kodu spada:
l=length(data1);
i=ones(10,l/10);
i(1,:)=1:10:l;
i=cumsum(i);
data3=max(data1(i));
clear i;
;)
Następne wpisy z tego wątku
- 06.07.13 11:45 sundayman
- 07.07.13 01:16 Michał Lankosz
- 07.07.13 03:06 sundayman
- 07.07.13 12:43 Miroslaw Kwasniak
- 07.07.13 15:40 sundayman
- 07.07.13 18:59 Michał Lankosz
- 08.07.13 03:29 sundayman
- 08.07.13 08:15 Michał Lankosz
Najnowsze wątki z tej grupy
- Szok
- Dziwny schemat wzmacniacza m.cz.
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- CGNAT i ewentualne problemy
- wzmacniacz mocy
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- Propagation velocity v/c dla kabli RF
- Jakie natynkowe podwójne gniazdo z bolcem (2P+PE)
- Czujnik nacisku
- Protoków komunikacyjny do urządzenia pomiarowego
- Hiszpania bez pradu
- amperomierz w plusie
- 3G-nadal działa
- Historia pewnego miernika kalibratora
- Ustym 4k Pro i wyświetlacz
Najnowsze wątki
- 2025-05-30 Warszawa => Senior Account Manager <=
- 2025-05-30 Warszawa => Senior C++ Developer (analiza numeryczna i modelowanie) <=
- 2025-05-30 Gdańsk => Team Lead Data Engineer (Snowflake) <=
- 2025-05-30 Warszawa => Team Lead Data Engineer (obszar Snowflake) <=
- 2025-05-30 Gdańsk => Programista Delphi <=
- 2025-05-30 Warszawa => Software Engineer .Net <=
- 2025-05-30 Warszawa => Inżynier oprogramowania .Net <=
- 2025-05-30 Warszawa => Młodszy Specjalista ds. wsparcia sprzedaży <=
- 2025-05-30 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-05-30 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-05-30 Szczecin => Key Account Manager IT <=
- 2025-05-30 Wrocław => Controlling systems Consultant <=
- 2025-05-30 Żerniki => Dyspozytor Międzynarodowy <=
- 2025-05-29 Się mi gówno przykleiło
- 2025-05-30 Jeżeli ktoś rozpędza BMW na drodze publicznej do 250 km/godz. to tworzy narzędzie zbrodni