Unexpected behavior with From Workspace block in Simulink

1 view (last 30 days)
The From Workspace block for Simulink is supposed to output data based on the time column in the variable. I have a model at a sample rate 5 times faster than the From Workspace, ie: 0.05 for Data, 0.001 for Model.
When I record the data from the From Workspace block at the Model sample rate of 0.001, I mostly see the data repeated 5 times but sometimes I see it repeated 6 times followed by 4 times for the next. This creates errors in my calculations because the expected data is wrong:
ie, 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 2 <- extra "2" 3 3 3 3 too little "3" 4 4 4 4 4

Accepted Answer

Kaustubha Govind
Kaustubha Govind on 29 May 2013
(I presume you meant that 0.01 is your model's sample rate, because 0.05 is 50 times 0.001, not 5 times)
This looks like an floating-point/accuracy issue - 0.05*3 is slightly larger than 0.01*15:
>> format hex
>> 0.01*15
ans =
3fc3333333333333
>> 0.05*3
ans =
3fc3333333333334
Which is why, for the 15th sample, the previous data point (=2) is used.
Perhaps you can adjust the time column of the imported variable so that it is multiples of 0.01 instead of 0.05?
  2 Comments
Thomas Marullo
Thomas Marullo on 29 May 2013
Sorry, you are indeed correct. From Workspace block is 0.005000000000000 and model sample rate is 1.000000000000000e-03. I think your recommendation of changing the From Workspace block to be multiples of the model sample rate is a good method.
Thomas Marullo
Thomas Marullo on 29 May 2013
I also tried using 0.04 as my From Workspace timing and 0.01 as my model sample rate and I had the same problems at step 40. I didn't think there would be a problem using this case since,
>> 0.01*40
ans =
3fd999999999999a
>> 0.04*10
ans =
3fd999999999999a

Sign in to comment.

More Answers (0)

Categories

Find more on Programmatic Model Editing in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!