How to define a "short" variable in MATLAB ?

9 Ansichten (letzte 30 Tage)
Andre Becker
Andre Becker am 2 Aug. 2018
Kommentiert: Andre Becker am 3 Aug. 2018
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 Kommentare
Rik
Rik am 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 am 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?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Guillaume
Guillaume am 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 Kommentar
Andre Becker
Andre Becker am 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Andre Becker
Andre Becker am 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 !

Kategorien

Mehr zu Performance and Memory finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by