How to use circshift in Simulink?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Bruce
am 3 Apr. 2025
Kommentiert: Bruce
am 3 Apr. 2025
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
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
Fangjun Jiang
am 3 Apr. 2025
It is not really a matrix. I suggest debugging the MATLAB Function first. Provide a Constant vector input, e.g. (1:5), observe the output. Is that what you are expecting?
The error was caused by something else. There is no input data thus no dimension info. Look at the last error message and specify the dimension of the input signal of that Gain block.
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!