主要内容

为什么分析器选择错误的状态长度?

如果算法的状态长度取决于算法的输入,请确保在生成MEX文件和运行分析器时使用选择相同状态长度的输入。否则,分析仪验证失败。

函数中的算法FIR_Mean没有状态意思是(输入)> 0,并有其他状态。

函数[Output] = FIR_Mean(input)持续的过滤器如果isempty(Filter) Filter = dsp。FIRFilter (“分子”0.4 fir1 (12));结束如果(平均(输入)> 0)%无状态输出=意味着(输入);其他的%该路径包含状态yFilt =过滤器(输入);输出=意味着(yFilt);结束结束

在此函数上调用自动状态长度检测时,分析器检测的状态长度为14样本。

dspunfoldFIR_Meanarg游戏{randn (10,1)}- s汽车- f真正的
分析输入MATLAB函数FIR_Mean创建单线程MEX文件FIR_Mean_st。mexw64搜索最小状态长度(这可能需要一段时间)检查不足10…检查不足Infinite…充分检查20…充分检查15…充分检查12…检查不足13…检查不足14…最小状态长度为14。创建多线程MEX文件FIR_Mean_mt。mexw64创建分析器文件FIR_Mean_analyzer

运行分析器函数。使用具有四个不同帧的输入。检查输出结果是否匹配。

FIR_Mean_analyzer (randn (10 * 4,1))
分析多线程MEX文件FIR_Mean_mt。mexw64……延迟= 8帧加速= 0.5x警告:多线程MEX文件FIR_Mean_mt的输出结果。mexw64与单线程MEX文件FIR_Mean_st.mexw64的输出结果不匹配。在生成多线程MEX文件fir_mean_mt . mex64时,请检查是否向dspextend函数提供了正确的状态长度值。有关此问题的最佳实践和可能的解决方案,请参阅dsp展开函数参考页金宝搏官方网站中的“提示”部分。> In coder.internal.warning(第8行)In FIR_Mean_analyzer ans = Latency: 8 Speedup: 0.5040 Pass: 0

通过= 0,函数将抛出一条警告消息,指出验证失败的可能原因。

验证失败原因

算法的状态长度取决于输入。当意思是(输入)> 0时,算法是无状态的。否则,算法包含状态。在生成MEX文件时,输入参数选择带有状态的代码路径。当分析器被调用时,多帧输入选择没有状态的代码路径。因此,两种情况下的状态长度不同,导致验证失败。

建议

建议在生成MEX文件和运行分析器时使用选择相同状态长度的输入。

有关最佳实践,请参阅的“提示”部分dspunfold

相关的话题