eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaprogram do symulacji obróbki audio ? › Re: program do symulacji obróbki audio ?
  • 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;

    ;)

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: