Tja, använder Matlab och har skrivit en del funktioner nu som jag vill köra. Problemet är bara att de kräver än jävla massa beräkningar och tar därmed en hel del tid att räkna klart. Jag misstänker att min dator kanske är lite för seg än vad den egentlig ska vara så jag vill veta hur man kan kontrollera så att den inte är för seg. Så jag vet om jag ska försöka göra min dator snabbare.
Har en bärbar Lenovo med Windows 8. Köpte den år 2013.
Har en intel core i7 processor, så den borde vara ganska snabb.
i7-3632QM Processor
CPU 2.2 GHz
8 GB RAM
64-bitars operativsystem
Hur ser dina funktioner ut? Vad gör de? Hur många element handlar det om?
Man ska processera 10 versioner av samma bild med storleken 240x320.
Varje bild ska filtreras och sedan ska man söka maxpunkter bland dom och lagra dem i en vektor.
Kort sagt.
Så man gör en for-loop i två dimensioner på 10 bilder och kollar grannar tillvarje pixel (8st).
Det kan mycket väl vara så att funktionerna är skrivna på ett sätt som inte passar MATLAB. En enkel tumregel är att man ska undvika loopar i MATLAB om man kan dra nytta av matris/vektor-operationer istället.
Mer kan vi såklart inte säga om vi inte får se kodsnuttar.
Finns det möjligtvis något sätt att ta reda på maximala antalet repetitioner av 1 (i följd) samt index där denna följd börjar. I A repeteras siffran 1 tre gånger i följd och denna repetition startar på index 6.
Pröva denna:
A = [1 2 3 4 2 1 1 1];
x = [0 cumsum(diff(A) ~= 0)];
function maxima = findDogMaximas(dogLower,dogMiddle,dogHigher)
maxima=[];
nrofmaxima=0;
[M ,N]=size(dogMiddle);
count_middle=0;
count_lower=0;
count_higher=0;
for j=2:1:M-1
for k=2:1:N-1
for x=-1:1:1
for z=-1:1:1
if dogMiddle(j+x,k+z)<dogMiddle
count_middle=count_middle+1;
end
if dogLower(j+x,k+z)<dogLower
count_lower=count_lower+1;
end
if dogHigher(j+x,k+z)<dogHigher
count_higher=count_higher+1;
end
end
end
sum=count_middle+count_lower+count_higher;
if sum<26
nrofmaxima=nrofmaxima+1;
maxima(1,nrofmaxima)=j;
maxima(2,nrofmaxima)=k;
end
end
end
end
Koden ovan anropar ytterligare 3 funktioner men de är inte så stora. Tar 15 minuter för mig att köra findDogMaximas. Notera att maxima är en vektor som ändrar storlek för varje loop-iteration.
Hallå! Känner att jag behöver er hjälp då matlab är helt nytt för mig. Jag tror att den är väldigt enkel, men jag vet bara inte vilka uppenbara fel jag gör.
Uppgiften ser ut så här:
Antag att a = 5 och att variabeln flagga har värdet falskt (dvs flagga=0 i MATLAB). Vad händer i följande fall?
Fall 1:
if flagga
if a<10
a=a+1
else
a=a-1
end
end
Fall 2:
if flagga
if a<10
a=a+1
end
else
a=a-1
end
Pröva om du är osäker!
Vad skulle ha hänt om istället a=5 och variabeln flagga hade haft värdet sant?
Jag har skrivit följande:
a=5;
if flagga
if (a<10)
a=a+1;
else
a=a-1;
end
end
Måste jag någonstans deklarera att flagga har värdet falskt, och hur i så fall?
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Stöd Flashback
Swish: 123 536 99 96Bankgiro: 211-4106
Stöd Flashback
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!