Hello,
I see that you are working on implementing convintrlv and convdeintrlv using MATLAB code. However, it seems that the delay introduced in output signal and the zero-padding stages are not ideal for your requirements.
While implementing convintrlv and convdeintrlv, the delay is inhereritant and we cannot do any thing to remove.
But there is a work-around for this.
To implement it as a MATLAB code, you can automate the process of padding extra zeros to input signal and removing the excess zeros from the output signal by defining a "user defined function".
I have made two user defined functions in files "UserDefined_convintrlv.m" and "UserDefined_convdeintrlv.m". They are attached with the answer.
You can use them as shown below:
x_prime=UserDefined_convintrlv(x,3,1);
the output of above code is:
Now, again se the user defined function "UserDefined_convdeintrlv" as shown in below code:
x=UserDefined_convdeintrlv(x_prime,3,1)
The output of above command is attached below:
In this way you can get rid of manuall adding the zeros. Also, the output generated by "convdeintrlv" is free from any delay.
I have tested both the user defined functions for different values of "nRows" and "slope". I found that it is working.
I am also attaching the code of "UserDefined_convintrlv.m" and "UserDefined_convdeintrlv.m", in case the attached files failed to open.
function out = UserDefined_convintrlv(x,nRows,slope)
zeros_to_be_padded=zeros(1,nRows*(nRows-1)*slope);
x=[x zeros_to_be_padded];
out = convintrlv(x,nRows,slope);
function out = UserDefined_convdeintrlv(x,nRows,slope)
zeros_to_be_removed=nRows*(nRows-1)*slope;
temp_out = convdeintrlv(x,nRows,slope);
out = temp_out(zeros_to_be_removed+1:end);
"REMEMBER TO PLACE THE "UserDefined_convintrlv.m" and "UserDefined_convdeintrlv.m" FILES IN THE SAME WORKING DIRECTORY.
I hope this helps...