четверг, 24 сентября 2009 г.

Тест на вменяемость :-)

Например, я хочу нарисовать осциллограмму гармонического сигнала. Например, с частотой 50 Гц. Например, на протяжении секунды.
Те, кто еще что-то помнят и понимают, сообразят, что я должен бы по идее увидеть 50 периодов синусоиды, там, или косинусоиды.

Пример на MATLAB:

f=50;
t=0:0.01:1;
s = sin(2*pi*f*t);
plot(t,s);

В результате получим, мягко говоря, неожиданный результат:

Тест на вменяемость: что и почему не так?

вторник, 22 сентября 2009 г.

Proba Facta #02

четверг, 17 сентября 2009 г.

ОС №2

пятница, 11 сентября 2009 г.

Аудио в MATLAB

Записывать можно с помощью wavrecord():

>> speech = wavrecord(16000, 8000, 1, 'double');
>> sound(speech) % воспроизведение с частотой дискретизации по умолчанию 8192 Гц)

Это запись 16000 отсчетов с частотой дискретизации 8 кГц, моно (только Windows).

Запись с помощью audiorecorder():
>> x = audiorecorder(16000, 16, 1);
>> record(x);
% recording ...
>> stop(x); % другие комманды: pause(), resume()
>> play(x);
>> speech2 = getaudiodata(x, 'double'); %преобразование

x: это объект audio recorder
16000: Гц, частота дискретизации (обычные значения: 8000, 11025, 22050, 44000)
16: точность представления отсчета в битах
1: количество каналов

Максимальный динамический диапазон для 16-битного представления -32768~32767. Он масштабируется к диапазону –1.0~1.0 в представлении double. Если по каким-то причинам значения сигнала вызывают переполнение, можно использовать sound(speech):
>> soundsc(speech, 8000); % или
>> sound(speech / max(abs(speech)), 8000);

Отображать во временной области так:
>> plot(speech); % или
>> plot([1:size(speech)]/8000, speech); % на оси x время в секундах

среда, 9 сентября 2009 г.

ОС №1

четверг, 3 сентября 2009 г.

Использование .Net классов в IronPython

На самом деле очень просто использовать .Net классы в IronPython. Первое о чем нужно помнить -- надо добавить ссылку (reference) на сборку вызываемого класса (также как и на C#).

Для этого надо использовать метод AddReference модуля clr. Правда необходимо, чтобы IronPython смог отыскать файл с указываемым пространством имен. Это достигается добавлением соответствующего пути к переменной sys.path.

Смотрите на пример. Сперва создадим простой класс на C#, который назовем TestClass и расположим в пространстве имен SampleClasses:

namespace SampleClasses
{
public class TestClass
{
public int Add(int a, int b)
{
return a + b;
}
}
}

Для простоты скопируем скомпилированный файл в папку C:\lib. Теперь запустим IronPython (будем считать, что вы его уже поставили). На экране появится что-то вроде этого:
Теперь, удостоверимся, что сборка SampleClasses доступна из IronPython:
>>>import sys
>>>sys.path.append(‘C:\\lib’)

Теперь добавляем зависимость:
>>>import clr
>>>clr.AddReference('SampleClasses')

Импортируем TestClass из пространства имен SampleClasses:
>>>from SampleClasses import TestClass 

Вот теперь все готово. Попробуем использовать этот класс:
>>>a = TestClass()
>>>a.Add(30,36)
66

Так вот это и работает. Теперь можно продолжить забавы с другими, уже готовыми классами .Net.