arrays - 如何在 Matlab 中快速生成多维数组(或张量)?
问题描述
我尝试用 3 个索引创建一个 3d 数组k=0,...,K-1, m'=0,...,M-1, m=0,...,M-1
。我可以生成这样一个 3d 数组,其中位置的元素以(k,m',m)
某种k/K+m'-m
快速的方式吗?我目前的方法是使用 3 层 for 循环来计算每个元素。这有点笨拙,我相信必须有更好的方法。那么有人可以给我一些灵感吗?感激的。
顺便问个问题。我可以从矩阵A
和向量生成 3d 数组b
吗?我的意思是每个元素都b
进行一些计算,A
以便我们可以推导出一个 3d 数组?如何?
解决方案
您需要创建 3 个向量:
k of size [1 x K x 1] ,
mp of size [M x 1 x 1] and
m of size [1 x 1 x M].
使用隐式扩展,您可以创建所需的数组:
K = 5;
M = 7;
k = 0:K-1;
mp = (0:M-1).'
m = reshape(0:M-1,1,1,[]);
result = k/K+mp-m;
请注意,它比ndgrid
解决方案更有效。
推荐阅读
- php - 得到错误 preg_match(): 参数 #2 ($subject) 必须是字符串类型,给定数组
- r - 在 r 中按季度绘制具有不同值和类别的数据框作为直方图
- python - VS 代码 Python 设置
- android - 按钮启用 false 默认背景和文本颜色
- angular - 单击选项卡时如何执行功能
- php - 如何从数组中获取相乘的数组键的总和
- go - 为什么这个 GoLang Mock HTTP 响应器返回错误的调用次数?
- javascript - 为什么这个基于 requestAnimationFrame 的游戏有时会卡住(但 CPU 没有卡住)?
- flutter - Flutter - 在应用程序最小化时获取位置(背景) - 每 x 秒
- go - “net/url”无法用磅解析 url