CBF中for循环变矩阵乘法的思想(arrayfire)--复数矩阵

本文延续前一篇博客,探讨如何使用ArrayFire将for循环转换为矩阵乘法,重点关注复数矩阵的情况。文章通过C++代码展示了原始实现,并对比了CUDA程序的运行时间。在复数运算时,ArrayFire的速度虽然降低,但其稳定性、简洁的代码和与CPU、CUDA相当的效果使其成为值得尝试的选项。
摘要由CSDN通过智能技术生成

接着上一篇博客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;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值