How to use circshift in Simulink?
Ältere Kommentare anzeigen
I have a vector signal in Simulink that I want to transform so that each value is replaced by the average of that value and the subsequent value. My first idea was using a MATLAB function block with the following code:
function y = fcn(u)
y = (u+circshift(u,1))/2;
However, this somehow changes the vector to a matrix and leads to an error message:

I don't fully understand this behavior, but it is probably caused by reasons described in the answers to a previous question:
Are there other ways to perform this function using standard Simulink blocks?
3 Kommentare
Mathieu NOE
am 3 Apr. 2025
In other words you want to do a average using the current and past value so either you use a FIR filter , or simply use a delay / memory block to store the previous sample (so you are re-creating a 2 taps FIR filter)
Walter Roberson
am 3 Apr. 2025
The first thing I would wonder is whether u is a row vector or column vector; the distinction would make a difference to the circshift() call.
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Signal Generation finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
