简单的“结合”,致命的失误。

在写个简单的数组插入排序,涉及到数组元素赋值。逻辑是元素后移,将前一个元素值赋值给下一个。于是写下了与下面例子相近的代码:

 

char ap[] = "fdpasb";

 

int i = 1;

ap[i] = ap[--i];

 

 

运行后发现赋值没有起到作用,数组未有任何变化。搞了半天没思路,以为是编译器优化的原因,于是硬着头皮看其汇编代码:

 

char ap[] = "fdpasb";

010D1418  mov         eax,dword ptr [string "fdpasb" (10D573Ch)]  

010D141D  mov         dword ptr [ebp-10h],eax  

010D1420  mov         cx,word ptr ds:[10D5740h]  

010D1427  mov         word ptr [ebp-0Ch],cx  

010D142B  mov         dl,byte ptr ds:[10D5742h]  

010D1431  mov         byte ptr [ebp-0Ah],dl  

 

int i = 1;

010D1434  mov         dword ptr [ebp-1Ch],1  

 

ap[i] = ap[--i];

010D143B  mov         eax,dword ptr [ebp-1Ch]  

010D143E  sub         eax,1  

010D1441  mov         dword ptr [ebp-1Ch],eax  

010D1444  mov         ecx,dword ptr [ebp-1Ch]  

010D1447  mov         edx,dword ptr [ebp-1Ch]  

010D144A  mov         al,byte ptr [ebp+edx-10h]  

010D144E  mov         byte ptr [ebp+ecx-10h],al 

 

 

注意加粗黑的几行,赋值表达式两边的元素index是完全一致的自减后的结果.... 这才想到赋值表达式的右结合。

 

 

检讨下失误的原因:逻辑与代码语法脱钩了。。望自勉,少再犯这种很低级的错误。:(

 

内容概要:本文档详细介绍了将贝叶斯优化应用于FBCCA(滤波器组公共空间模式)参数调整的完整解决方案,包括代码实现和优化流程。首先,通过MNE库加载并预处理EEG数据,进行7-30Hz的预滤波处理,提取相关事件片段。接着,定义了FBCABayesianOptimizer类,该类包含创建动态滤波器组、获取模型参数以及定义优化目标函数的方法。其中,参数空间由离散和连续参数组成,涵盖了滤波器数量、CSP组件数、起始频率、带宽、交叠率等,并通过Optuna库进行多维搜索。优化过程中采用5折交叉验证机制,同时引入智能早停策略以提高效率。最后,提供了优化结果的可视化工具,如优化轨迹图、参数重要性图和滤波器组配置图,帮助用户更好地理解和分析优化过程。 适合人群:具有一定编程基础,尤其是对机器学习、脑电数据分析及贝叶斯优化感兴趣的科研人员和技术开发者。 使用场景及目标:①通过动态滤波器组生成算法,捕捉频段间的过渡特征;②利用混合参数空间设计,探索不同参数组合的效果;③借助高效交叉验证机制和智能早停策略,提高优化效率;④通过可视化工具,直观展示优化过程和结果。 阅读建议:此资源不仅展示了完整的代码实现,还深入探讨了FBCCA参数调整的理论基础和实际应用。建议读者在学习过程中结合理论知识与代码实践,逐步理解每个步骤的原理,并尝试调整参数以观察不同设置对优化效果的影响。同时,可根据自身硬件条件,考虑扩展建议中的GPU加速、分布式优化和在线学习等高级特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值