calling a matlab function with scalar type

2 次查看(过去 30 天)
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 个评论
Geoff Hayes
Geoff Hayes 2017-1-30
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.)
Richard Poley
Richard Poley 2017-1-30
Sorry, Geoff. It's proprietary so I'll need to check.
I'll post back when I know.

请先登录,再进行评论。

采纳的回答

Geoff Hayes
Geoff Hayes 2017-1-30
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! :)

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by