I am trying to solve the Newton Coefficeint matrix for Newton sample rate converter please could you suggest for modifications?

6 ビュー (過去 30 日間)
So this coding is based on computation of coefficients of the
the filter structure formula as given in the img:
d is the bandwidth tuning factor :N is the polynomial order and M is subfilter order N =M-1
this is the fractional delay of Farrow Rate Converter d is fractional delay of Newton used for bandwidth tuning
My code :
function coeffMatrix = computeNewtonCoeff(N, d)
% Compute the Newton Coefficient matrix
% N: Order of the interpolator
% d: Bandwidth tuning parameter
N =M-1;
% Pre-allocate the coefficient matrix
coeffMatrix = zeros(N + 1, 1);
% Loop to compute coefficients using the equation
for k = 0:N
mu =linspace(-0.5,0.5);
d= compute_d_in_steady_state(mu, N);
% Compute the factorial term
numerator = prod(d:(d + k - 1)); % d * (d+1) * ... * (d+k-1)
denominator = factorial(k); % k!
coeffMatrix(k + 1) = numerator / denominator; % Coefficients
end
end
function d = compute_d_in_steady_state(~, N)
% Computes d in steady-state given mu and N
% mu: Fractional part of accum, should be in [-1, 0)
% N: Interpolator order
% Ensure mu is within the valid range
mu = linspace(-0.5,0.5);
% Compute d using the steady-state expression
d = mu - N / 2;
end
N= 4;
mu = linspace(-0.5,0.5);% Order of the interpolator
d =compute_d_in_steady_state(mu,N); % Example value of the bandwidth tuning parameter
coeffMatrix = computeNewtonCoeff(N, d);
disp('Newton Coefficient Matrix:');
disp(coeffMatrix);
Solution is showing after running :
Newton Coefficient Matrix:
1.0000
-2.5000
1.8750
-0.3125
-0.0391
The solution mentioned in the paper is different :
I have attached the pdf
  • Design_of_Low_Complexity_Arbitrary_Pass-band_Filter_Hardware_using_Newton_Structure-based_Lagrange_Interpolators (3).pdf
for further reference you can read through .

回答 (1 件)

Subhajyoti
Subhajyoti 2024 年 11 月 25 日
As per my understanding, the Horner’s scheme expansion calculates for the value for scalar values of ‘n’ and ‘d’. But in the given code snippet, ‘d’ is an array of values, generated by ‘linspace’, resulting in a logical error.
Refer to the following resources to know more about ‘linspace’:
Additionally, you can refer to the following resource to know more about Multirate Signal Processing in MATLAB:

カテゴリ

Help Center および File ExchangeMultirate Signal Processing についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by