原来MATLAB也有Bug
0赞个人觉得MATLAB还是比较可靠的,从未发现Bug。不过最近却遇到了一个经官方证实的Bug,来自于Simulink中的Mean(求均值)模块。
问题起始于自己想用Simulink搭一个非常简单的通信链路模型:二进制比特序列经过16-QAM星座映射后,进行8倍过采样,再通过AWGN模块,那么最佳接收机的算法就是对每8个采样点求均值。模型如下:
但是在用Mean模块对复数求均值时却报错了:
Error in 'filename/Mean': Unsigned integer or fixed-point signals must be real.
Component: Simulink | Category: Block error
我检查过Mean模块的设置,并没有对fixed-point进行相关设置。MATLAB Help中也说明了Mean模块可以对复数求均值,如下图
于是,自己又尝试了其他求均值的方法,包括下面4种:
- 将实部和虚部分开求均值,结果显示正确。
- 自己用Submatrix等模块搭了一个求均值的模块,结果显示正确。
- 将Mean模块的输出直接送到Workspace,结果显示正确。
- 自己用MATLAB Function写了一个求均值的m代码,结果显示正确。
我发现,Mean模块的输出就是不能接Rectangular QAM Demodulator Baseband模块,否则就报错。数据类型和维数,也没有问题
后来在MATLAB Central中提问,得到了MathWorks工程师Jihad的回答,这是Mean模块本身的一个bug,将在R2016b版本得到修复。
要说IDE自己的Bug,目前记得比较清楚的只有Visual C++6.0 全编译后假死的情况,遇到后只需重启就行。后来用Visual Studio还没遇到过Bug。当然C写的比较少,不知道经常写C的程序猿有没有发现Visual Studio更多的Bug。51单片机的Keil好像也有Bug,但具体不记得了。总的来说,依然觉得MATLAB非常可靠,功能也越来越强大。期望MATLAB越来越牛逼






