How to define a "short" variable in MATLAB ?

7 views (last 30 days)
Dear MATLAB Community,
I created a WebService with MATLAB. Now I want to run a specific function but this funtion strongly needs a data type "short". Parallel to MATLAB I created the same WebService and the same function in C# and there the function runs perfectly.
string elementName = "EL53";
string elementTypeName = "Line";
short portNr1 = 0;
bool isConnected = true;
client.SwitchElementAtPort(project, elementName, elementTypeName, portNr1, isConnected);
Above you can see the function in C#. Now my question is how can i create such a data type in MATLAB. I know that the data type "short" usually doenst exists in MATLAB and that it is equivalent to "int16()", so I tried this (see below), but sadly that didnt work.
portNr1 = int16(0)
Is there some kind of .dll I have to include to create a "short" variable ? What kind of possibilities do I have ?
Thanks in advance!! I am very grateful for any kind of help!! :)
  2 Comments
Rik
Rik on 2 Aug 2018
What is the Matlab code you're trying to run? 'it doesn't work' is too little detail to help you effectively.
OCDER
OCDER on 2 Aug 2018
Did you mean you CAN make an int16 number in matlab, but it fails when passing this to another function that requires short? Can we see THAT part, where you're passing in this argument to the function that's failing?

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 3 Aug 2018
Glad it's working. I'm still writing an answer as I want to clarify what's happening in matlab.
When you call a dll, COM, or .Net function matlab automatically translate compatible matlab types to the appropriate type as required by the function. You don't have to do this yourself. This means that if a function needs a short you can pass it any numerical type, a int16 of course, but double work just as well.
  1 Comment
Andre Becker
Andre Becker on 3 Aug 2018
Thanks for your comment! That makes it much clearer. You are totally right, I tried a double and it worked as well!

Sign in to comment.

More Answers (1)

Andre Becker
Andre Becker on 3 Aug 2018
I am very sorry and ashamed. As I wanted to prepare the answer to your comments above I noticed a different, very little mistake. After correcting it the function ran perfectly. That means that MATLAB had no problem to read the "int16()" variable ... The mistake was that the function I was trying to run was void... but I gave it a variable as output, that didnt work.. In C# i used it correctly but didnt notice the slight difference in my MATLAB code.. I changed the code:
From this:
SwitchElementResult = cliente.SwitchElementAtPortByID(elementID,portNr,isConnected)
To this:
cliente.SwitchElementAtPortByID(elementID,portNr,isConnected)
Nevertheless I want to thank you for your support !

Categories

Find more on Performance and Memory in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!