【发布时间】:2019-05-05 21:28:17
【问题描述】:
我有一个 MATLAB 代码,如下所示。我正在尝试使用 MATLAB Coder 将此代码转换为 C 代码,但遇到了错误。
预期为逻辑、char、int、fi、single 或 double。找到一个 mxArray。 MxArrays 从对 MATLAB 解释器的调用中返回,并且在表达式中不受支持。它们只能用于赋值的右侧以及作为外部函数的参数。
% Applies A-weighted filtering to sound and draws it's plot
% in a figure as output.
function A_filtering
coder.extrinsic('tic')
coder.extrinsic('toc')
coder.extrinsic('display')
sampleRate = 44100;
reader = dsp.AudioFileReader('Jet_Flypast.wav');
fs = 44100;
weightFilter = weightingFilter('A-weighting',fs);
% fileWriter = dsp.AudioFileWriter('SampleRate',fs);
% visualize(weightFilter,'class 1')
scope = dsp.SpectrumAnalyzer('SampleRate',fs,...
'PlotAsTwoSidedSpectrum',false,...
'FrequencyScale','Log',...
'FrequencyResolutionMethod','WindowLength',...
'WindowLength',sampleRate,...
'Title','A-weighted filtering',...
'ShowLegend',true,...
'ChannelNames',{'Original Signal','Filtered Signal'});
tic
while toc < 60
x = reader();
y = weightFilter(x);
scope([x(:,1),y(:,1)])
display(x(:,1))
end
release(scope);
release(weightFilter);
release(reader);
end
这个问题可能是重复的,但我搜索了互联网并找不到任何相关的帖子。有没有办法解决这个错误?
【问题讨论】:
标签: c matlab code-generation mex matlab-coder