dspunfold.
运行入口点Matlab®使用要测试的输入功能。确保函数没有运行时错误。称呼Codegen.
在函数上并确保它成功生成MEX文件。
使用Multhreaded MEX文件使用dspunfold.
。使用该状态长度指定状态长度-
选项。状态长度必须至少与MATLAB功能中的算法相同的长度。默认情况下,-
被设定为0.
,表示算法无状态。
运行生成的分析仪功能。使用经过
标志以验证多线程MEX文件的输出结果和单线程MEX文件匹配。此外,检查分析仪功能显示的加速和延迟是否令人满意。
如果输出结果不匹配,则增加状态长度并再次生成多线程MEX文件。或者,使用自动状态长度检测(使用指定使用-s auto.
)确定与输出匹配的最小状态长度。
如果输出结果匹配但加速和延迟不令人满意,请增加重复因子-R.
或者增加使用线程的数量-T.
。此外,您还可以调整状态长度。调整dspunfold.
选项并生成新的多线程MEX文件,直到您对结果满意..
有关使用Multithread MEX文件的最佳实践dspunfold.
,查看“提示”部分dspunfold.
。
运行入口点matlab函数
创建切口点MATLAB函数。
功能[Y,MSE] = AdaptiveFilter(x,噪声)执着的RLSF1 FFILT COMPET_VAR.如果isempty(rlsf1)rlsf1 = dsp.rlsfilter(32,'忘记就活跃',0.98);ffilt = dsp.firfilter('分子',fir1(32,25));%未知系统COUNT_VAR = 1E-4;结尾d = ffilt(x)+ keate_var *噪声;%期望信号[y,e] = rlsf1(x,d);MSE = 10 * log10(总和(例如^ 2));结尾
该功能模拟RLS过滤器,其过滤输入信号X
, 使用D.
作为所需的信号。该函数返回过滤的输出y
和过滤器错误E.
。
跑适应性熏碎
使用您要测试的输入。验证功能是否运行而不会错误。
AdaptiveFilter(Randn(1000,1),Randn(1000,1));
称呼Codegen.
在适应性熏碎
并生成MEX文件。
Codegen.适应性熏碎- args.{Randn(1000,1),Randn(1000,1)}
使用多线程MEX文件使用dspunfold.
将状态长度设置为32.
样品和重复因子1
。提供大于或等于MATLAB函数中算法的状态长度。当至少一个条目FrameInputs.
被设定为真的
,在样本中考虑状态长度。
dspunfold.适应性熏碎- args.{Randn(1000,1),Randn(1000,1)}-32.-F真的
分析输入MATLAB函数AdaptiveFilter创建单线程MEX文件AdaptiveFilter_st.mexw64创建多线程MEX文件AdaptiveFilter_mt.mexw64创建分析仪文件AdaptiveFilter_Analyzer
运行生成的分析仪功能
分析仪考虑输入的实际值。为了增加分析仪的效果,沿着输入的第一维提供至少两个不同的帧。
AdaptiveFilter_Analyzer(Randn(1000 * 4,1),Randn(1000 * 4,1))
分析多线程MEX文件AdaptiveFilter_mt.mexw64 ... latency = 8帧speedup = 3.5x警告:多线程mex文件Adaptivefilter_mt.mexw64的输出结果与单线程MEX文件AdaptiveFilter_st的输出结果不匹配。mexw64。在生成多线程MEX文件AdaptiveFilter_mt.mexW64时,检查您是否为DSPUNFOLD函数提供了正确的状态长度值。有关此问题的最佳实践和可能的解决方案,请参阅“DSPUNFOLD金宝搏官方网站函数参考”页面中的“提示”部分。>在Coder.internal.warning(第8行)在AdaptiveFilter_Analyzer ANS =延迟:8 Speedup:3.4686通过:0
增加状态长度
分析仪没有通过验证。显示的警告消息指示提供了错误的状态长度值dspunfold.
功能。增加状态长度1000
样本并从上一节重复该过程。
dspunfold.适应性熏碎- args.{Randn(1000,1),Randn(1000,1)}-1000-F真的
分析输入MATLAB函数AdaptiveFilter创建单线程MEX文件AdaptiveFilter_st.mexw64创建多线程MEX文件AdaptiveFilter_mt.mexw64创建分析仪文件AdaptiveFilter_Analyzer
运行生成的分析仪。
AdaptiveFilter_Analyzer(Randn(1000 * 4,1),Randn(1000 * 4,1))
分析多线程MEX文件AdaptiveFilter_mt.mexw64 ...延迟= 8帧Speedup = 1.8x ans =延迟:8加速:1.7778通过:1
分析仪通过了验证。建议您向分析器功能提供不同的数字,并确保分析仪功能通过。
提高加速和调整延迟
如果您想提高Speedup,您的系统可以承受更大的延迟,请将重复因子增加到2
。
dspunfold.适应性熏碎- args.{Randn(1000,1),Randn(1000,1)}-1000-R.2-F真的
分析输入MATLAB函数AdaptiveFilter创建单线程MEX文件AdaptiveFilter_st.mexw64创建多线程MEX文件AdaptiveFilter_mt.mexw64创建分析仪文件AdaptiveFilter_Analyzer
运行分析仪。
AdaptiveFilter_Analyzer(Randn(1000 * 4,1),Randn(1000 * 4,1))
分析多线程MEX文件AdaptiveFilter_mt.mexw64 ...延迟= 16帧Speedup = 2.4x ans =延迟:16加速:2.3674通过:1
重复此过程,直到您实现满意的加速和延迟。
使用自动状态长度检测
选择大于或等于算法状态长度的状态长度。如果在分析地确定算法的状态长度不容易,请使用自动状态长度检测工具。通过设置调用自动状态长度检测-
到汽车
。该工具检测分析器通过验证的最小状态长度。
dspunfold.适应性熏碎- args.{Randn(1000,1),Randn(1000,1)}-汽车-F真的
分析输入MATLAB函数AdaptiveFilter创建单螺纹MEX文件AdaptiveFilter_st.st.st.mexw64搜索最小状态长度(这可能需要一段时间)检查无状态......不足检查1000 ...足以检查500 ......不足检查750 ...不足检查875 ...足够的检查812 ......检查843的不足......足够的检查827 ......检查835不足......不足检查839 ...足以检查837 ...足以检查836 ...足够的最小状态长度为836创建多线程MEX文件AdaptiveFilter_mt.mexw64创建分析器文件AdaptiveFilter_Analyzer
最小的状态长度是836.
样品。
运行生成的分析仪。
AdaptiveFilter_Analyzer(Randn(1000 * 4,1),Randn(1000 * 4,1))
分析多线程MEX文件AdaptiveFilter_mt.mexw64 ...延迟= 8帧Speedup = 1.9x ans =延迟:8加速:1.9137通过:1
分析仪通过了验证。