Difference between revisions of "Компресия на звук"

From Ilianko
Line 29: Line 29:
 
  y = [1 2 2 3];
 
  y = [1 2 2 3];
  
 +
[[Image:line.png|right|frame|...]]
 
*Намиране на най-близката функция от първи ред - y = a + b*x  
 
*Намиране на най-близката функция от първи ред - y = a + b*x  
[[Image:line.png|right|frame|...]]
+
 
 
  A = [ [1 1 1 1]' , x'];
 
  A = [ [1 1 1 1]' , x'];
 
  z = A\y';
 
  z = A\y';
Line 36: Line 37:
 
  a = z(1)
 
  a = z(1)
 
  b = z(2)  
 
  b = z(2)  
 
+
 
  %генериране на стойности за x
 
  %генериране на стойности за x
 
  x1 =linspace(0,6,20);
 
  x1 =linspace(0,6,20);

Revision as of 19:04, 27 September 2012

Звукът най-често е в следствие на движение на тяло във някаква среда (въздух,...). Движението предизвиква промяна на налягането, което се разпространява както вълна във водата. Тъпънчето на ухото преобразува промяната на налягането в сигнал, който мозъка ни възприема като звук.

Компютрите използват микрофон вместо тъпанче за преобразуването на звуковото налягане в електрически сигнал. След това на определен интервал от време (примерно - 44000 пъти в sec) се вземат отчети (samples) за стойността на електричския сигнал. Всяко измерване се съхранява като число с фиксирана точност (примерно 8, 16 бита).

Компютрите излъчват звуков сигнал, като съхранети отчети са подават към устройство генериращо електрически сигнал, който се подава към тонколоните.

Самплиране на сигнал


  • mp3 player
  • GSM телефония

bit rate

Количество битове необходимо за запис на 1 секунда звук.

CD-to има фиксирана семплираща честота =>

44100samples/sec * 16bits/samples = 705600bits/sec

Сравнително големият размер на аудио файловете в CD формат, ни дава основание да търсим по ефективни методи за съхранение на звук.

Компресия без загуби

Компресия със загуби

Оригиналният сигнал се замества от линиейна комбинация на косиносови функции.

Задача. 1. Да се намери y = f(x) по зададени точки

x = [1 2 4 5];
y = [1 2 2 3];
...
  • Намиране на най-близката функция от първи ред - y = a + b*x
A = [ [1 1 1 1]' , x'];
z = A\y';
%коефиценти на функцията
a = z(1)
b = z(2) 

%генериране на стойности за x
x1 =linspace(0,6,20);
%стойност на функцията за тези стойности
y1 = a + b*x1;
%изчертаване на дадените точки и най-близката права
plot(x1,y1,'-b',x,y,'*r')
grid on
  • Намиране на апроксимираща функция от трети ред у = а + b*x + c*x^2 +d*x^3
A = [ [1 1 1 1]' , x', x'.^2, x'.^3];
z = A\y';
%коефиценти на функцията
a = z(1)
b = z(2)
c = z(3)
d = z(4)
x1 =linspace(0,6,20);
%стойност на функцията за тези стойности
y1 = a + b*x1+c*x1.^2+d*x1.^3;
%изчертаване на дадените точки и най-близката права
plot(x1,y1,'-b',x,y,'*r')
grid on


Намиране на най-близката функция от трети ред