GPU&VS2012&CUDA&matlab&Arrayfire杂记(六)——c语言转换

主要是常规波束形成和方位历程图;
常规波束形成的matlab部分代码如下所示:
for i = 1:length(theta)
    a_s = exp(-jay*2*pi*[0:N-1]*f0*d/c*sin(theta(i)*pi/180));  (大哥写的)
    beam_single(i) =1/(a_s *inv(R1) *a_s');
end
  
    首先在网上找了一个关于复数及复数矩阵的头文件math.h这个头文件,然后就是开始编写呢,部分代码如下所示:


/////计算不同输入角度的波束幅度/////////////////////////////////
        theta=-90;
        for(i=0;i<360;i++) //角度搜索 (-90:0.5:89)
        {
                theta=theta+0.5;
                for(j=0;j<M;j++) 
                {
                        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));
                }
}
其中遇到的问题就是细节上的问题了、测试上的问题,主要就是matlab语言和c语言的功能是否一样,跑出来的数据是否一样,然后去改正,最开始出现的就是转置在循环的外面了,就各种不对,所以就各种细心吧。


这里面使用的测试数据都是模拟产生的数据,还没有使用实际采集的数据,后面的循环读取文件会讲到这个。虽说这个看起来工作量不大,对我这样很久没有写过程序的小白来讲,写完这个感觉后面顺畅了很多,万事开头难啊!

     

你可能感兴趣的:(vs)