matlab - 使用向量元素选择矩阵元素
问题描述
Matlab 中有没有办法根据向量中的元素选择矩阵元素?我不认为我的描述很清楚,但我实际上想要做的是类似于:
A=zeros(3,3,3) %3d matrix
A(1,1,2)=5
b=[1,1,2]
A(b)=5
意思是,一种使用向量中的条目作为参数从矩阵中选择一个元素的简单方法。这个确切的示例不起作用,因为最后一行将 b 计为单个参数,而不是三个。我可以写 A(b(1),b(2),b(3)) 但我真正在这里寻找的是是否有一种好的方法。
解决方案
方法一:使用sub2ind求线性索引
您可以定义一个名为的函数findLinearIndex
,以便将向量元素转换为 的线性索引A
:
findLinearIndex = @(A,b) sub2ind(size(A), b(1), b(2), b(3))
A(findLinearIndex(A,b)) = 5
方法2:通过num2cell将向量转换为元胞数组
然后,您可以使用{:}
获取索引
b_cell = num2cell(b) ;
A(b_cell{:}) = 5
推荐阅读
- python - 数组元素的条件访问
- java - Java - 同步块的动态锁监视器
- java - 连接对象 close() 没有正确关闭连接
- ios - 在 NSRegularExpression 中排除模式
- amazon-web-services - 无法创建容器错误:地址中的冒号过多
- networking - 如何通过 GSM/LTE 模块发送运营商间短信
- java - Spring启动getConversionService返回null
- xaml - 在 xamarin 中按钮的单击事件上加载主 xaml 页面内的列表视图
- sql-server - 从一个表加载的效率与从具有相同结构的两个表加载的效率,以及合并结果。(无索引,MSSQL)
- javascript - selected.js 从已选择的选项中隐藏删除(X),但保留新选项