解释了simulink中的MATLAB功能块错误

时间:2015-11-09 15:21:55

标签: matlab simulink

我创建了如下所示的simulink块:

enter image description here

解释MATLAB函数中的

我使用此代码。

function y1 = fcn(signal)
%% variable declaration
Fm = 100;%length of Frames excursion
framelnc = 100;%length of Frames excursion
Fn = 256;%length of Frames sampling frequency 12.500kHz, frame length 020.5ms
fs = 8000;

x=signal;

%% Preprocessing: Noise Removal
IS= 0.25; % initial silence (noise only)
output=denoise(x,fs,IS);
y = output;

%% Extraction of LFCC Features
feat = lfcc(y,fs);

%% Extract VQ CODE
k=16; % number of centroids required

code1 = vqext(feat, k);
test = mean2(code1);

%% Emotions Recognition 
load ('train.mat')

Class = knnclassify(test , feature, type);

if (Class == 1)
   %% Display identification results
   msg=1;
end

if (Class == 2)
   %% Display identification results
    msg=2;
end

y1 = msg;

我在单独的matlab文件中定义了这些denoiselfccvqextknnclassify函数。但是我得到了如下错误。

enter image description here

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在您的图片中,我们可以看到您的数据正式有两个维度[1024x1]!所以我认为,解释的MATLAB函数无法使用这种数据类型。

所以我建议使用帧转换块。

P.S。顺便问一下,为什么要使用Interpreted功能?真的有必要吗?

  

注意这个块比Fcn块慢,因为它调用了   每个集成步骤中的MATLAB解析器。考虑使用内置   而是块(例如Fcn块或数学函数块)。   或者,您可以将函数编写为MATLAB S函数或   MEX文件S函数,然后使用S-Function块访问它。