I parse the pens in a netlogo script (workspace.plotManager.plots.map{_.pens.map{_.saveString}). Often it represents a plot of a given variable in function of ticks. I was wondering if it was possible to hook each ploted value for every tick, so that I can get an Array of each value taken for each tick ?
Thanks
Related
I'm creating a pipe model in OpenModelica using the method of characteristics. The method is currently working, but the results are displayed as single variables stored in several arrays. The arrays store variables as H_array[T,N] (head) where T is time and N is space.
I would like to view the results as a plot (shown in the image below on the right hand side) with head H on the y-axis and time T on the x-axis in the "Plotting" tab in OpenModelica, but as previously mentioned, the results are displayed as single variables as shown below. More specifically, I would like to look at a certain place (meaning N), say N=3, and observe how H_array[k,3] for k=2:T vary on the y-axis as a function of time T on the x-axis.
I'm expecting to observe a (semi)square pressure pulse as seen on the right side of the picture below. I know how to pick out every element with N=3 and put them in a separate array, but I do not know how to continuously display the values as a function of time. Can this be done with a derivative function in some way? Any tips?
Im trying to do some calculations in a Matlab (R2015b) Simulink function block. I use a signal that gives discrete values in 1-minute intervals.
What i want to do is store the signal values of 1 day (1440 values), convert them into a vector and input it in my Matlab function for calculation (getting time between first and last value > x). All while the simulation is running.
Unit delay, and Transport delay blocks wont work because i need all the stored values at once.
Any ideas on this are much appreciated!
Thanks!
You need to add a "To Workspace" block to your simulink diagram. Setting the options as you wish will allow you to save all the outputs in a single vector. You can select the variable's name, and the default is "simout".
Then, after running the diagram, you have the variable you want in the workspace (as if you had typed it in the console). So next, you can call your function with the argument.
I have a MATLAB function block in simulink and for each step simlulink does I want to input a counter with increment 1.
Ex:
1st Step -> Acc=1
2nd Step -> Acc=2
I tried using a Count up block + Pulse generator but the time step of simulink is not constant.
Any ideas?
A common way to do this is to use a sum and a memory block with an initial condition of 0. It should count steps in both fixed and variable step simulations. In fact I believe this would be build and perform very much like an s-function solution during simulation.
Why not just use an integrator block? You can choose with a discreet or continuous integrator block depending on your model type. You can specify the start conditions/value and reset conditions if needed. The image below shows an example of discreet and continuous blocks. Both are just using their default values. To do what you want (adding 1 to the output every step) just define the model sample time as an environment variable (eg sT=0.01) and set the integrator gain to be 1/sT.
I would like to export one scalar variable from a Simulink Diagram to the Matlab Workspace.
Although I know that the value of 'Chemin' can be changed during the simulation, I am only interested in exporting the initial value to the workspace; I do not want a TimeSerie variable (like the 'To Workspace' block would do), I only one want scalar value.
Thank you in advance for your help!
I don't think you can do what you want. Everything in Simulink is time-based so you have to save the entire variable as a function of time to the workspace. However, you can add a model callback in StopFcn that extracts just the first value and clears the time-dependent variable from the workspace, e.g.:
chemin_0 = chemin(1); % assuming chemin is the name of the time-dependent variable saved to workspace
clear chemin
The StopFcn callback is executed after the simulation stops.
You can do this pretty easily with an Enabled Subsystem. Make the enable signal false at all times except t=0 by using a constant (=0) and an Initial Condition block (=1), as per the following picture.
Inside the Enabled Subsystem have
with the save format set to be Array. The simout variable will then be a scalar valued number.
how to use the "from workspace block in simulink" ?
I have tried using the from workspace block by given 10*2 matrix as input. it is appending some extra data along the data I have given .
and I have such 3 such blocks and want to know how I merge them.
Read the documentation. Simulink is time-based so the data in your From Workspace block must be as a function of time. Does your 10 x 2 matrix represent a signal as a function of time? If so, it needs to be as follows:
A two-dimensional matrix:
The first element of each matrix row is a
time stamp.
The rest of each row is a scalar or vector of signal
values.
The leftmost element of each row is the time stamp of the
value(s) in the rest of the row.
10 values isn't very much, it's likely that Simulink will need additional data points at intermediate times, if you have the Interpolate Data check box ticked. If not, "the current output equals the output at the most recent time for which data exists".
I think you may have a misunderstanding of the variables intended to be read by the FromWorkspace block.
The block expects a time series defining the value at various points in the simulation.
The From Workspace block help should point you in the right direction on this. Mathworks Help Documentation
I believe that something like the following would work for you:
>> WorkspaceVar.time=0;
>> WorkspaceVar.signals.values=zeros(10,2)
>> WorkspaceVar.signals.dimensions = [10,2]