Я хочу реализовать приведенные ниже разностные уравнения для разработки аккумулятора и дифференциатора:
Аккумулятор:y[n] = y[n-1] + x[n]
, где y[n]
– n-й выход, а x[n]
– n-й вход.
Дифференциатор:y[n] = x[n] - x[n-1]
, где y[n]
– n-й выход, а x[n]
– n-й вход.
Аккумулятор:
double xn, yn, yn1 = 0;
std::vector<double> InputVector = GetInputVector(), OutputVector;
for(int i=0; i<MAX_NUM_INPUTS; i++)
{
if (IsFinished()) break;
yn = yn1 + xn;
yn1 = yn;
OutputVector.push_back(yn);
}
Дифференциатор:
double xn, yn, xn1 = 0;
std::vector<double> InputVector = GetInputVector(), OutputVector;
for(int i=0; i<MAX_NUM_INPUTS; i++)
{
if (IsFinished()) break;
yn = xn - xn1;
xn1 = xn;
OutputVector.push_back(yn);
}
Данные во входном векторе происходят из непрерывного сигнала времени. Другими словами, производится выборка для получения этого дискретного сигнала времени. И у него частота дискретизации Td.
Когда я увеличиваю частоту дискретизации входного сигнала, амплитуда выходного аккумулятора. Это ожидаемо, так как бывает больше образцов для дифференциации. С другой стороны, с увеличением частоты дискретизации выходная амплитуда дифференциатора уменьшается. Амплитуды как дифференциатора, так и интегратора верны (при значениях, которые математика говорит, что они должны быть), когда частота дискретизации унитарна (т. Е. 1,0 отсчета в секунду).
Мой вопрос:
Как свести на нет влияние частоты дискретизации на выходной вектор?
Мой общий вопрос:
Предположим, что я получаю разностное уравнение из произвольной причинной передаточной функции с дискретным временем H(z)
. Разностное уравнение в этом случае может быть любым. Как свести на нет влияние частоты дискретизации в этом общем случае?
(Пожалуйста, обратитесь к этой ветке форума для получения более подробной информации: Соответствующая ветка форума)