接着上一篇博客CBF中for循环变矩阵乘法的思想(arrayfire)的续。
上一篇主要讲了算法思想的改变,但是只是测试了实数,没有测试复数的效果,实际项目中都是复数的运用,所以这次添上复数的代码及测试结果。
这次在添加arrayfire的代码之前,先看看不用这个库的一个C++代码形式:
for(i=0;i<360;i++) //角度搜索 (-90:0.5:89)
{
theta=theta+0.5;
for(j=0;j<NN;j++) //产生复指数信号exp(-jay*2*pi*[0:N-1]*f0*d/c*sin(theta(i)*pi/180));
{
a_s[1][j+1].real=cos(-2*PI*j*f0*d/c*sin(theta*PI/180));
a_s[1][j+1].imag=sin(-2*PI*j*f0*d/c*sin(theta*PI/180));
}
//cout<<"as"<<endl;
//CMatrix_print(a_s,1,3);
CMatrix_multiply(a_s,1,NN,R1,NN,NN,temp_11);
CMatrix_transpose(a_s,1,NN,a_sT);
CMatrix_multiply(temp_11,1,NN,a_sT,NN,1,temp_22);
//cout<<endl;