MATLAB/OCTAVE skalowanie macierzy

luski
Użytkownik
Użytkownik
Posty: 29
Rejestracja: 9 kwie 2007, o 19:22
Płeć: Mężczyzna
Lokalizacja: jedwabne
Podziękował: 2 razy
Pomógł: 1 raz

MATLAB/OCTAVE skalowanie macierzy

Post autor: luski »

Witam. Piszę funkcję w octavie (klon matlaba) i chcę użyć w niej skalowania macierzy. Jako że nie znalazłem żadnej wbudowanej funkcji, to napisałem własną. Jest bardzo prosta. Wygląda następująco:

Kod: Zaznacz cały

function matrix = scale_matrix(orig, y, x)
% funkcja skaluje macierz 2D do podanych rozmiarów x i y
% orig	oryginalna macierz
% x		szerokość po przeskalowaniu
% y		wysokość po przeskalowaniu
% matix	przeskalowana macierz

	for i = 0:y-1
		for j = 0:x-1
			matrix(i+1, j+1) = orig(1+floor(size(orig, 1)*i/y), 1+floor(size(orig, 2)*j/x));
		endfor 
	endfor

endfunction
Funkcja działa poprawnie, ale jest wąskim gardłem całego programu. Czy znacie może jakąś wbudowaną funkcję albo możecie zasugerować coś, co by działało szybciej niż powyższa propozycja?
Awatar użytkownika
kuch2r
Użytkownik
Użytkownik
Posty: 2302
Rejestracja: 18 paź 2004, o 18:27
Płeć: Mężczyzna
Lokalizacja: Wrocław/Ruda Śląska
Podziękował: 9 razy
Pomógł: 408 razy

MATLAB/OCTAVE skalowanie macierzy

Post autor: kuch2r »

nie wiem czy dokładnie o takie coś chodzi...
... shape.html
luski
Użytkownik
Użytkownik
Posty: 29
Rejestracja: 9 kwie 2007, o 19:22
Płeć: Mężczyzna
Lokalizacja: jedwabne
Podziękował: 2 razy
Pomógł: 1 raz

MATLAB/OCTAVE skalowanie macierzy

Post autor: luski »

Nie, nie o to chodzi. Funkcja reshape zmienia kształt macierzy, np zamiast 3x5 zamienia na 5x3. Mi chodzi o funkcję zmieniającą rozmiar macierzy, np z 3x5 zamieniającą na 7x7.
ODPOWIEDZ