matlab三维数组与二维矩阵相乘问题
Matlab三维数组与二维矩阵相乘问题
近来在搞一个改进近场music算法的仿真问题,用matlab进行二维搜索的时候写了很多for循环,导致运行速度极慢。考虑到matlab语言本身的矩阵运算特点,改用三维数据解决二维搜索问题,下面记录过程中遇到的一点问题与解决方法
目前我有一个三维数组A,大小为691x1801x21,一个二维矩阵U,大小为21x18,要实现的式子是
P=AH∗(U∗UH)∗AP=A^{H} *(U*U^{H})*AP=AH∗(U∗UH)∗A
实际上,P的大小是,691∗1801∗(1∗21)∗(21∗18∗18∗21)∗(21∗1)=691∗1801691*1801*(1*21)*(21*18*18*21)*(21*1)=691*1801691∗1801∗(1∗21)∗(21∗18∗18∗21)∗(21∗1)=691∗1801。和网上许多的按页相乘的三维矩阵乘法不同,这里并不是按页相乘,区别如下:
按页相乘:
而这里的乘法是
不同与按页相乘的bsxfun指令,这里其实我们可以用matlab的reshape指令来完成,下面是我操作的流程:
- 将A矩阵交换行列,变为21x1801x691
- 使用reshape指令,将A平铺为21x(1801x691)的二维矩阵
- 计算(U∗UH)∗A(U*U^{H})*A(U∗UH)∗A
- 计算结果再与AHA^{H}AH相乘,这里可以用bsxfun实现点对点的相乘
代码如下:
A=exp(GAMMA+PHI);%任意给定3维矩阵即可
A_1=permute(A,[3,2,1]);%交换行列
A_2=reshape(A_1,length(UU),length(incidence_angle)*length(distance));%平铺
U_times_A_1=UU*A_2;%相乘
U_times_A=reshape(U_times_A_1,length(UU),length(incidence_angle),length(distance));%重新组合成三维
U_times_A=permute(U_times_A,[3,2,1]);%重新交换行列
P_1=sum(bsxfun(@times,conj(A),U_times_A),3);
第一次写blog,分享一点自己的解决方法,由于时间紧张写的不太完善,有需要的可以私信相互交流
matlab三维数组与二维矩阵相乘问题相关推荐
- MATLAB三维数组转为二维数组(时间序列分析中很有用)
在MATLAB中三维数组转二维的方法 一.写该程序的初衷 在处理时间序列遥感数据的时候,我之前的做法是: 将时间序列数据读取为三维矩阵: 将该数据保存为BIP格式: 在每个像元上进行循环,取出其第三维 ...
- matlab三维图、二维云图的可视化绘图
matlab三维图.二维云图的可视化绘图 matlab三维图.二维云图的可视化绘图 1.meshgrid生成数据矩阵 2.可视化方案 3.shading类型 matlab三维图.二维云图的可视化绘图 ...
- php三维数组转换二维数组,php 三维数组转二维数组(多维数组变合拼二维数组)(foreach循环 数组叠加)...
/*************** * @function 三维数组转二维数组 * @Param: $array : 传入参数 * @Return: $tempArr 返回结果数组 ********** ...
- matlab 把图像变成二维的,matlab图像怎么变成二维矩阵
求:matlab二维直方图图像分割程序.. 我给你个网站``里面的教学很详细~~希望能帮到你~~~~反正里面的软件教程很多``就是不知道有没你要找的``如果有~~给我加分哈``http://tech. ...
- 【Matlab】如何对二维矩阵进行线性/非线性插值?
1.Introduction 最近又遇到了矩阵插值(重采样)的问题,在最开始写博客的时候就写了篇关于 Excel 重采样的文章,不过在逐渐熟悉 Matlab 的过程中,还是决定看看能不能编程自动实现, ...
- [Matlab] matlab将三维数组转为二维数组
在使用matlab做实验时,我遇到一个问题是将一个303012的三维数组转化成3012的数组,采用平均值的方式,在y轴上取平均 值.首先取平均值matrix = mean(matrix,1);然后si ...
- matlab三维数据切片二维
三维数组,load 24*365*5 选取某一天,a=load(:,311,:) 得到24*1*5的数据 降维 方法一:b=reshape(a,[24,5]) 得到24*5二维数组 方法二:b=[a( ...
- matlab三维图与二维图画在一起,matlab 画二维图与三维图
C#_技巧:计算代码块运行的时间 System.Diagnostics下类Stopwatch,给程序代码块运行计时, 利用start()和stop()方法来标记代码快. 该命名空间下还有一些其他类,可 ...
- Matlab比较2个 二维矩阵 或 二维图像 相似度的方法总结
1.corr2 A = ; B = ; cor = corr2(A,B) 2.通过直方图相似性比较 (参考:https://blog.csdn.net/xiaojianzhao/article/det ...
最新文章
- 机器学习中的参数与非参数方法
- Java文件删除操作File#delete()
- JAVA实现可视化的xpath_Java学习之XPath
- 修改Visual Studio Code的自定义键盘快捷键
- 常用JavaScript函数 71 -(自我总结)
- 烟台市与拼多多达成战略合作 启动烟台优品线上云购节活动
- 怎么成为日上会员直邮_手把手教你玩转各大免税店直邮方法,再也不用担心真假代购...
- android calendarview 单月显示博客,android CalendarView
- localStorage、sessionStorage详解,以及storage事件使用
- oracle如何查找谁删除了数据_一文看懂Oracle是如何闪回数据库的?
- adb pull 报错处理:adb: error: cannot create file/directory 'E:\': No such file or directory
- win10 使用cmake编译opencv源码生成VS工程(二)
- 图及其应用实验报告 c语言,图的应用 实验报告
- 博客上云历程(二):Docker入门介绍与使用
- 5G NR CSI-RS介绍(4)-- CSI Report配置详解
- 朋友圈评论、点赞测试点
- axure中图表背影_Axure制作可视化图表的几种方法
- 法拉利虚拟学院2010 服务器,法拉利虚拟学院
- css中left属性,CSS left属性用法及代码示例
- python var是什么意思_python3函数里var是什么意思?
热门文章
- 【OpenCV】Windows安装OpenCV4-Python版本
- mysql cbo rbo_Oracle优化器(RBO与CBO)
- 目标检测:从overfeat到Fast R-CNN
- 语音信号处理入门系列(1)—— 语音信号处理概念
- 等离子电视工作原理(转)
- 三 Laya3D 加载资源 (场景/预设/模型网格/材质/动画文件/贴图/粒子)
- oracle数据库定期备份
- solidty实现默克尔树空投
- 一款免费、简单但超便捷的流程图绘制软件——draw.io
- 2017年山东省CIO智库周年庆暨信息化与工业化融合发展峰会成功召开!