add-block command in MATLAB - matlab

I want to add blocks to MATLAB simulink model by command line. I used add_block command to add a Constant block to my model by following command and it worked
add_block('simulink/Sources/Constant','MyModel/ConstValue')
But when I try to add'Chart' to my model by the following command,
add_block('stateflow/Chart','MyModel/Chart')
It causes an error:
Error due to multiple causes.
Caused by:
Unable to load block diagram 'stateflow'
There is no block named 'stateflow/Chart'
How should I sove this prblem ?

Solution ref: https://uk.mathworks.com/matlabcentral/answers/53920-how-to-add-a-stateflow-chart-in-an-existing-simulink-model-using-api
The source you need is sflib/Chart not stateflow/Chart
So the command is something like:
add_block('sflib/Chart','MyModel/Chart')

Related

Amesim FMU initialization issue

I have a HU submodels FMU that is not running in a Simulink model.
I use Matlab2020b, FMIkit2.7 and the FMU created with Amesim 2019.1.
This is the error message:
AME_LIC_CACHE_INIT set to 100
Impossible to open file 'pV/pV_FrontAxle_Variant1.txt'.
Impossible to open file 'pV/pV_FrontAxle_Variant1.txt'.
Fatal error in FXA001 instance 1.
Terminating the program.
Simcenter Amesim model: initialization failed.
Failed to exit initialization mode
Failed to exit initialization mode. The FMU crashed (exception code: UNKOWN_EXEPTION_CODE).
I give 2 parameter in .txt file for the FXA001. It is worked in older versions of the model.
I tried to give the full path, copy the files to the folder where the model was and still not found.
Has anyone ever had such an issue?
Thank you!
Based on my experience, this issue might happen if the two text files do not have a header mentioning the Amesim table format they use.
For example for a so-called ā€œ1Dā€ table:
#Table format: 1D
Otherwise the files may not be embedded properly when exporting the FMU.

Matlab - replace classification layer using a script (automatically)

i want to train a neural network with flexible output size. In the beginning, i used the matlab deep network designer to manually replace the classification and fully connected layer to the desired output size. Now, i want to automatically replace it, using a script.
Which command is working for that?
Simply trying the line:
net.Layers(142,1).InputSize = 10;
gives me the error message
Unable to set the 'InputSize' property of class 'FullyConnectedLayer' because it is read-only.
Trying to replace the complete layer (not only inputsize) is resulting in the same error message.
Is this possible with matlab, and if yes, which commands will do the job?
Thanks in advance!
Okay, i think i solved it. When changing the network manually inside of the deepnetworkdesigner, there is the possibility to click "export code" which exports the desired code for the adapted output size

Is it possible to check interface up/down using epoll?

I was looking at the source code below.
https://github.com/millken/c-example/blob/master/epoll-example.c
From this source code, the line 140~149 is about error handling when the socket (or file descriptor) has an error.
I wanted to see EPOLLERR occurred and tried to make interface down using "ifconfig [interface name] down" command.
But I don't see EPOLLERR detected from epoll_wait() at line #137.
Is there any way I can generate EPOLLERR condition?
Is it possible to make EPOLLERR condition using interface up/down command?

Kettle getStepMetaInterface() function error in Modified Script with MongoDB Output step

Using pentaho 5.3, Modified Java Script Value step to inject those data.
I want to dynamically set path and names in the MongoDB Output step. Here is my code
var meta = new org.pentaho.di.trans.TransMeta( source_path );
var mongoStep = meta.findStep("MongoDB Output");
mongoStep.setDescription('This is MongoDB Output by Ray');
Alert(mongoStep.getName()); // code is ok until here.
var mongoStepMeta = mongoStep.getStepMetaInterface() // error occurs here
When I want to get the getStepMetaInterface() to use step functions, the error occurs.
java.lang.LinkageError: loader constraint violation: loader (instance of org/pentaho/di/core/plugins/KettleURLClassLoader) previously initiated loading for a different type with name "org/pentaho/metastore/api/IMetaStore"
This error seems to be generated by the violation of .jar.
But when I use those original steps, like "Microsoft Access Input", I can successfully get getStepMetaInterface(). In this way, I can use all the functions defined in AccessInputMeta.java.
From my point of view, this problem may have a relation to the MongoDB Output step, because this is a plugin for kettle, but I am not sure.
Any response is appreciated!!
Yep, it's because of the plugin system. The Modified Java Script step and the Access Input step (among many others) are all in the Kettle engine and share a classloader. External plugins (like MongoDB Input/Output) have their own isolated classloaders. You have to do some voodoo with thread context classloaders and reflection in order to get at the Meta classes for those steps.
Here's an example of the hoops you have to jump through to get at external plugins (the Big Data plugin in this example) from the Modified Java Script step:
https://github.com/brosander/pentaho-hadoop-shims/blob/verification-2/test/verification/jobs/dependencies/ForceHiveToConnectRemotely.ktr
First, thanks to Mass who solves the problem.
Here is his advice:
This problem is caused by jar file conflict.
In pentaho installation there are two jar files:
-lib/metastore-5.3.0.0-213.jar
-plugins/pentaho-mongodb-plugin/lib/metastore-5.3.0.0-213.jar
Just remove the last jar file, this error will disappear.

error using save can't write file

I have got this really strange error in matlab. When I try to run the command
save(fullfile('filepath','filename'),'var','-v7');
I get the error message,
error using save can't write file
but when I try
save(fullfile('filepath','filename'),'var','-v7.3');
everything works fine. The the variable takes some space on the workspace, 165MB, but the I would guess that the size should not be an issue here. Does anyone know why it does not work to save in v7?
For the one that want to confirm the size of the variable, I will add the whos information,
Name Size Bytes Class Attributes
myName 1x1 173081921 struct
BR/ Patrik
EDIT
The variable I try to save is a struct with plenty of fields. I have tried to save a 3 dimensional matrix of size 800 mb, which went through without problems.
This is not an exact match to your problem, but I received the same error message when trying to save to -v6 format. Matlab is supposed to issue an error when a variable type or size is not supported:
help save
...
If any data items require features that the specified version does not support, MATLAB does not save those items and issues a warning. You cannot specify a version later than your version of MATLAB software.
Matlab's error checking seems to not be perfect, because there are certain situations (dependent on Matlab version and the particular variable type) that just fail all together with this not so helpful error message:
Error using save
Can't write file filename.mat.
For example, saving a string with certain unicode characters with the '-v6' option in Matlab r2015b in Linux produces the error, but Matlab r2016a in Windows does not. This is the output from my Matlab r2015b session:
>> A=char(double(65533))
A =
?
>> save('filename.mat','-v6','A')
Error using save
Can't write file filename.mat.
Without having your specific variable to test with, but seeing that the error messages match, I suggest removing parts of your data structure until it will save in order to isolate the variable that is causing it to fail.