simulink function block error: Function output 'y' cannot be an mxArray in this context.

10 Ansichten (letzte 30 Tage)
i am dealing with a function block in simulink, trying to calculate the interval of a signal with variable frequency to get the real time frequency. My thought is to use tic/toc get the interval between two peaks.
So confused by this error. The diagnostic says:
Function output 'y' cannot be an mxArray in this context. Consider preinitializing the output variable with a known type. Function 'MATLAB Function1' (#312.9.10), line 1, column 10: "y" Launch diagnostic report.
Simulink cannot determine sizes and/or types of the outputs for block 'signalTimer/MATLAB Function1' due to errors in the block body, or limitations of the underlying analysis. The errors might be inaccurate. Fix the indicated errors, or explicitly specify sizes and/or types for all block outputs.
function y = timer(u)
coder.inline('never');
coder.extrinsic('toc')
coder.extrinsic('tic')
persistent x1 x2
% x1=0;
% x2=0;
if isempty(x1)
x1 = 0;
x2 = 0;
else
x2=x1;
end
x1=u;
if x1<x2
y=toc;
y=double(y);
tic
end
end
  2 Kommentare
Jiang Ping
Jiang Ping am 9 Jan. 2019
Thank you, but this problem can be addressed if I execute tic in the command line before run the script. Actually what I am really want to do is to measure the frequency of sqaure wave whose frequency is variable in real time .

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Simulink Functions 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