calling a matlab function with scalar type
2 views (last 30 days)
Show older comments
Richard Poley
on 30 Jan 2017
Commented: Richard Poley
on 30 Jan 2017
I am collecting data from a Simulink model into an array so I can manipulate it using a custom function in Matlab. The data is an array of dimensions 1601 x 1, single precision data. Now, I want to operate on one element of this data with my own function which is written in C and converted into a MEX function.
The function works fine with data entered like this:
x = 0.2345
myFunc(x)
...yet when I do this:
x = arr(100)
myFunc(x)
I get the error:
Error using myFunc
Input multiplier must be a scalar.
...however this
isscalar(x)
...yields this...
ans =
logical
1
...so is 'x' a scalar or not?
If not, how can I make it a scalar so I can call it with my function? Thanks.
6 Comments
Geoff Hayes
on 30 Jan 2017
Richard - can you attach the C code instead? I would like to see that as opposed to the compiled Mex function. (Should be able to just attach the code rather than a zip file, even if you have to rename it with a txt extension.)
Accepted Answer
Geoff Hayes
on 30 Jan 2017
No worries, Richard. One other thing you may want to consider trying is to cast your x to a double. The example
x = 0.2345
class(x)
shows the x is a double and since this works (as expected) then you may want to try that for the other. For example,
x = double(arr(100));
myFunc(x)
Now, you will be passing in the same data type. The error message might be misleading and so we see Input multiplier must be a scalar rather than the "true" error message which might be "Input multiplier must be a double rather than a single". This is just a guess though! :)
More Answers (0)
See Also
Categories
Find more on Structures 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!