Zaloguj się
Blog na Matlab.pl
Forum polskich użytkowników
 
UŻYTKOWNICY GRUPY PROFIL Zaloguj się, by sprawdzić wiadomości FAQ
 



Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wektoryzacja wyrażeń warunkowych
Forum MATLAB Strona Główna-> MATLAB
Post Wysłany: 14 Maj 2017, Nie 11:13 pm Temat postu: Wektoryzacja wyrażeń warunkowych Odpowiedz z cytatem
 
AUTOR:
Macck



Dołączył: 14 Maj 2017
Posty: 1


Ogląda profil użytkownika Wyślij prywatną wiadomość
Cześć,

mam potrzebę zwiększyć szybkość obliczeń i słyszałem że mogę wykonać coś co się nazywa wektoryzacją

Jest następujący fragment kodu

Kod:

for k = 2 : nframes

    extractionFrames
(:,:,2,k) = extractionFrames(:,:,2,k) - backgroundMean(:,:,2,k);
    
extractionFrames(:,:,3,k) = extractionFrames(:,:,3,k) - backgroundMean(:,:,3,k);
    
    for
i = 1 : trafficVid.Height
        
for j = 1 : trafficVid.Width
          
              
            
if  abs( extractionFrames(i,j,2,k) - extractionFrames(i,j,2,k - 1) ) > 0.25
                
                   foreground
(i,j,2,k) = 1;
            else
                  
foreground(i,j,2,k) = 0;
            
end
 
[... itd]




problem w tym że iteracja i if dla każdej jednej wartości w macierzy 240x360 zajmuje stosunkowo dużo czasu ( bo tych klatek mam powiedzmy 500).

Czy da się to napisać inaczej żeby wykonywało się to szybciej?


 

Post Wysłany: 16 Maj 2017, Wto 2:31 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
kasztel
Może pisać książki


Dołączył: 10 Maj 2007
Posty: 1047
Skąd: Uniwersytet Warszawski


Ogląda profil użytkownika Wyślij prywatną wiadomość Odwiedź stronę autora
Zamiast pętli coś takiego:

Kod:

foreground
= zeros(tu 4 liczby z rozmiarem)
foreground(abs(diff(extractionFrames,1,4))>0.25) = 1;

trzeba sprawdzić jak zachowuje się k bo foreground ma o jeden element mniej niż reszta

RaK


 

Post Wysłany: 16 Maj 2017, Wto 2:32 pm Temat postu: Odpowiedz z cytatem
 
AUTOR:
darekc
Może pisać książki


Dołączył: 19 Lis 2007
Posty: 563
Skąd: P.Śl. Gliwice


Ogląda profil użytkownika Wyślij prywatną wiadomość
Kod:
for i = 1 : trafficVid.Height
  
for j = 1 : trafficVid.Width
      
if  abs( extractionFrames(i,j,2,k) - extractionFrames(i,j,2,k - 1) ) > 0.25
         foreground
(i,j,2,k) = 1;
      else
        
foreground(i,j,2,k) = 0;
      
end
   end
end

zastąp
Kod:
foreground(:,:,2,k) = double(abs( extractionFrames(:,:,2,k) - extractionFrames(:,:,2,k - 1) ) > 0.25);

Przed wejściem w pętlę ze zmienną sterującą k zarezerwuj pamięć na tablicę foreground.

A może jeszcze tak:
Kod:
extractionFrames(:,:,2,2:nframes) = extractionFrames(:,:,2,2:nframes) - backgroundMean(:,:,2,2:nframes);
extractionFrames(:,:,3,2:nframes) = extractionFrames(:,:,3,2:nframes) - backgroundMean(:,:,3,2:nframes);

foreground(:,:,2,2:nframes) = double(abs( extractionFrames(:,:,2,2:nframes) - extractionFrames(:,:,2,1:nframes - 1) ) > 0.25);


 

Forum MATLAB Strona Główna-> MATLAB
Wyświetl posty z ostatnich:   

Napisz nowy temat     Odpowiedz do tematu Zobacz poprzedni temat :: Zobacz następny temat

Wszystkie czasy w strefie CET (Europa)

Skocz do:  

Statystyki forum:



Od dnia 08.06.2006 forum odwiedzano 36073846
Najwięcej użytkowników 266 było obecnych 19 Lutego 2015, Czw 7:03 pm

Aktualnie online:




Najnowsze posty na forum:
Nowoczesne systemy płatności  (26 Maj 2017, Pią 2:06 pm)
Kiedy poznajesz nowe osoby w twoim zyciu, to chcesz zeby z c  (26 Maj 2017, Pią 7:34 am)
Model sieci SN  (25 Maj 2017, Czw 4:56 pm)
Samochód z gwarancją  (24 Maj 2017, Sro 6:29 pm)
Serwis samochodowy Honda  (24 Maj 2017, Sro 6:01 pm)
Sterowanie wektorowe silnika PMSM  (24 Maj 2017, Sro 12:53 pm)
Zapis obrazu z scope  (23 Maj 2017, Wto 7:05 pm)
Brak funkcji tr3d  (23 Maj 2017, Wto 4:11 pm)
FFT Problem  (23 Maj 2017, Wto 1:12 pm)
Nienawidzę swojej pracy  (23 Maj 2017, Wto 9:52 am)
Twoje prawa:
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Nie możesz ściągać plików na tym forum