Simulink "Sum" block giving wrong result

조회 수: 3 (최근 30일)
Arthur Reis
Arthur Reis 2022년 11월 3일
편집: Arthur Reis 2022년 11월 14일
I ran a simulation that produced an unnexpected result. It was supposed to be just a noise floor, but for some periods this signal seems to stay constane and then spike before returning to normal. And it happened twice in this particular length of simulation:
I tried the debugger and found an error in a sum block. I've tried re-running multiple times, the error occurs at the same timestep (my noise input didn't change between these runs). If I change the tolerance, it still occurs, but at a different time step.
Example, in this step, the result of the sum of this two signals is correct 1.9794e-11 - 1.905161e-11 = 7.43e-13;
As well as in the next step, -9.639417e-13 + 3.0406e-12 = 2.07e-12
however, at the next step, the signals are updated, but the sum, wrongly, still displays the previous value:
It continues for several steps. If I choose to run the remaining of the simulation, eventually it just "explodes" after a while and goes back to normal.
What could be going on?
  댓글 수: 3
Arthur Reis
Arthur Reis 2022년 11월 14일
Sure thing.
If I import them into matlab and try to sum them, the result is different from what simulink has calculated.
input1 = load('input1.mat').data;
input2 = load('input2.mat').data;
input3 = load('input3.mat').data;
output_from_add = load('output_from_add.mat').data;
input3.Data %input3 is a constant 0;
ans = 0
sumofinputs = input1 + input2;
df = sumofinputs - output_from_add;
plot(df);
Arthur Reis
Arthur Reis 2022년 11월 14일
편집: Arthur Reis 2022년 11월 14일
~~Just an update: selecting ode113 as a solver seems to solve this problem (ode45 is the problematic). And I haven't tried the others.~~
~~So, this could be related to the solver selection. Any insights of why?~~
Edit: Ignore the previous lines... it just changed the timestep where the error occurs

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by