_Andu_
Feb 13 2009, 14:32
Нужно расчитать действующие значения sin сигнала 45-55Гц при помощи фильтра.
В MATLABе можно расчитать коэффициенты фильтра.
Но как расчитать действ. значение.
Действ. значение = корню квадратному из суммы квадратов реальной и мнимой части или корню квадратному из суммы квадратов sin и cos составляющей.
Так входной сигнал я фильтрую с помощью коэффициентов фильтра расчитаных в MATLABе и получаю к примеру sin состовляющую а как получить коэффициенты cos состовляющей чтобы получить cos b расчитать действ.
Alex11
Feb 13 2009, 16:44
sin и cos состявляющие бывают, когда его в спектр раскладываешь. А когда во временной области фильтруешь - как был, так и остался синусом (или косинусом в зависимости от точки отсчета). Так что фильтром амплитуду не посчитаешь. Другое дело, что после фильтра там будет достаточно чистый синус, и можно взять от него амплитудное значение, а действующее получить умножением на корень из двух пополам.
Если сигнал действительный - cos ему не нужен. Просто - усредняете во времени сумму квадратов, при взятии отсчета извлекаете корень. Фильтр тоже не нужен - вдруг сигнал содержит гармоники? Поставив квадратор после фильтра, вы получите уровень первой гармоники, а никак не действующее значение сигнала в целом...
_Andu_
Feb 16 2009, 06:59
Мне нужно пощитать действующие на первой гармоники остальные не надо.
Особенностью измерения действующего значения
а) Малая величина входного сигнала.
Сигнал снимается с различных датчиков предварительного усиления. В сигнале присутствуют шумы и постоянные смещения;
б) большой диапазон изменения сигнала. Измеряемые величины могут различаться в 100 – 1000 раз.
Для таких сигналов метод цифрового накопления суммы квадратов отсчетов не обеспечивает требуемую точность. Для задач измерения действующего значения токов применяется метод определения действующего значения по измерению отдельных гармоник сигнала. Принципом измерения является свертка входной последовательности отсчетов тока с соответствующей опорной гармоникой, построенной по периоду первой гармоники, т.е. строится функция синуса.
Отсчеты входного сигнала x i сворачивается с синусом первой гармоники sin( t i)
S1=сумма sin(ti)*xi
Аналогично сигнал сворачивается с косинусом первой гармоники
C1=сумма cos(ti)*xi
A1=sqrt(S1^2+C1^2)
Величина A1 линейно пропорциональна действующему значению первой гармоники.
Аналогично проводится свертки с кратными опорными гармониками и определяются действующие значения остальных гармоник входного сигнала.
Так вот вопрос в том что в MATLABE я получаю коэффициенты фильтра для 1-й гармоники считаю например что это коэф. sin а как получить cos.
Делал такое. Тут не фильтры нужны, а квадратурные генераторы на каждую из анализируемых гармоник. А уже после смесителей - ФНЧ, в качестве которых могут выступать и простейшие интеграторы. В последнем случае получится как раз то, что вы написали.
_Andu_
Feb 16 2009, 09:33
Хорошо. Как расчитать цифровой квадратурный модулятор?
Генератор, вы хотели сказать? А что его считать - делать надо. Например так:
В каждом такте:
ck=cos(fi);
sk=sin(fi);
fi+=dfi;
if(fi>=2.0*M_PI) fi-=2.0*M_PI;
dfi надо посчитать заранее, dfi=2.0*M_PI*Fсигнала/Fдискретизации
Да он, небось, и готовый в матлабе есть...
_Andu_
Feb 16 2009, 15:27
да но Fсигнала меняется в диаппазоне 45-55Гц. Тогда что считать частоту и перерасчитывать dfi=2.0*M_PI*Fсигнала/Fдискретизации
Тут два варианта. Либо, если сигнал очень слаб и полоса +-5 Гц слишком широкая (шумы сосать будет), то, действительно, вручную или автоподстройкой выставить Fсигнала. Либо, если все не так плохо, то заменить ваш интегратор на ФНЧ с полосой 5 Гц (для второй гармоники - 10Гц, для третьей - 15 и т. д.). Но это проходит, только если гармоник мало - полосы старших гармоник сольются.
Если искать свертку сигнала с синусом и косинусом, вроде бы частоту надо обязательно знать, чтобы суммировать по целому числу периодов?
Не обязательно. Правильный ФНЧ лечит.
Цитата(kons @ Feb 17 2009, 01:53)

Не обязательно. Правильный ФНЧ лечит.
Вы имеете ввиду, что свертка по очень большому числу периодов?
Нет, я имею в виду, что на выходе ФНЧ получаем комплексный (cos(delta F) , sin(delta F)) гармонический сигнал. sin^2+cos^2 = комплексной амплитуде и от времени не зависит.
Цитата(kons @ Feb 17 2009, 11:51)

Нет, я имею в виду, что на выходе ФНЧ получаем комплексный (cos(delta F) , sin(delta F)) гармонический сигнал. sin^2+cos^2 = комплексной амплитуде и от времени не зависит.
А что идет на ФНЧ? Разве не Сигнал*sin и Сигнал*cos?
Если например Сигнал=sin, то
(Сигнал*sin)^2 + (Сигнал*cos)^2 = (sin*sin)^2 + (sin*cos)^2 = sin^2, от времени зависит.
ФНЧ используется, чтобы получить среднее значение, вместо интеграла за целое число периодов? Тогда конечно можно, если после смены амплитуды/фазы сигнала немного подождать пока фильтр установится. Правильно я понял?
Пусть сигнал действительный = cos(Ws*t) = (e^(j*Ws*t) + e^(-j*Ws*t))/2
Смеситель домножает его на e^(j*Wo*t)
Имеем на выходе его 0.5*e^(j*(Ws+Wo)*t) + 0.5*e^(-j*(Wo-Ws)*t), т.е. сумму двух гармонических комплексных сигналов частотами Ws+Wo и Wo-Ws. Ws близка к Wo, поэтому Ws+Wo отфильтровывается ФНЧ, а на его выходе остается только e^(j*(Wo-Ws)*t), комплексная огибающая которого от времени не зависит. Можно было бы все тоже самое расписать через sin и cos, но лениво...
_Andu_
Feb 18 2009, 06:43
Я не понял как на выходе ФНЧ мб sin и cos составляющая. Это надо два фильтра (но как их правильно получить?) или делать преобразование Гильберта(как для него рассчитать коэффициенты?)
Цитата(kons @ Feb 17 2009, 22:48)

Пусть сигнал действительный = cos(Ws*t) = (e^(j*Ws*t) + e^(-j*Ws*t))/2...
Понятно, составляющая с двойной частотой фильтруется ФНЧ. Если убирать её интегралом, то для точного результата достаточно любое целое число периодов сразу после изменения измеряемого сигнала, а с ФНЧ это будет время установления на требуемую точность.
_Andu_
Feb 18 2009, 08:09
Мне нужно на периоде и гармоники в сигнале есть.
Цитата
Я не понял как на выходе ФНЧ мб sin и cos составляющая. Это надо два фильтра (но как их правильно получить?)
Два сместеля (c cos и c sin, даваемыми квадратурным генератором)), за ними 2 идентичных ФНЧ, после них pwr=re^2+im^2. Чем уже полосы ФНЧ, тем лучше, но время установления должно вас удовлетворять (не быть слишком большим).
Пишем весь этот блок в общем виде (=класс C++), потом создаем столько объектов, сколько надо гармоник - они раличаются только Wo. Сигнал подаем на входы всех объектов, все полученные pwr суммируем и извлекаем корень.
_Andu_
Feb 19 2009, 12:53
Как я понял, например беру генерю Sin и Cos на период (50 Гц) делаю их константами, затем входной сигнал умножаю на Sin и Cos пропускаю два массива через два одинаковых ФНЧ получаю реальную и мнимую часть. Так я понял? Но опять вопрос что делать с частотой если например она изменилась с 50 до 45 Гц. Расчитывать отдельно частоту и использовать сгенеренные Sin и Cos на период 45 Гц.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.