我想知道在Matlab中是否有可能仅在N x M x K阵列的N x M部分上映射函数而不使用for循环。具体来说,我有一个N x M矩阵,包含长度为3的向量,所以我的整体结构是N x M x 3.现在我想计算每个向量的范数,所以它会很好应用一个函数,该函数以1 x 3向量作为输入,并应用于N x M部分的每个单元格"在顶部",产生N x M x 1数组。
我目前的做法是使用for循环并通过索引(i,j,:)提取相关部分。现在我只是好奇是否有更好的解决方案。 :) 通过cellfun似乎可以使用N x M cellarray,但我无法在普通数组上找到任何方法。
提前致谢!
答案 0 :(得分:1)
某些Matlab函数(例如 sum )允许您指定要执行的维度。 使用norm的定义,对于输入数组a:
sqrt(sum(a.^2,3))
应该沿第3维返回标准。
答案 1 :(得分:0)
为了节省内存和时间,如果您不想处理整个矩阵,只需将部分源数据发送到cellfun