【问题标题】:MATLAB: Per-element min operation on cell objectMATLAB:单元格对象的每元素最小操作
【发布时间】:2016-05-16 20:52:52
【问题描述】:

我有一个大小为 nx1 的单元格对象,它在每个坐标处包含一个大小为 mxnxk 的矩阵。

作为输出,我想得到一个大小为 mxnxk 的矩阵,它是单元格中所有矩阵的每像素最小操作的结果。

我目前使用 for 循环,但我更喜欢使用更优雅的东西。

代码示例:

%example for an input (in my case m,n and k are much bigger)
m = 4; n=3; k=2;
relevanceCell = {rand(m,n,k),rand(m,n,k),rand(m,n,k)}

%prints input
relevanceCell{:}

%for loop for calculating the per-pixel minimal value.
minRes = relevanceCell{1};
for ii=2:length(relevanceCell)
    minRes = min(minRes,relevanceCell{ii});
end

%prints output
minRes

【问题讨论】:

    标签: matlab


    【解决方案1】:

    通过第 4 个维度连接它们,然后在该维度上应用 min 函数:

    minRes = min(cat(4,relevanceCell{:}),[],4);
    

    为了更通用,您可以找到数组的维数并进行调整:

    nextDim = 1 + ndims(relevanceCell{1});
    minRes = min(cat(nextDim,relevanceCell{:}),[],nextDim);
    

    【讨论】:

    • 感谢您的回复!这是一个好主意,适用于 k=1 的情况。如果k>1,它将不起作用。我修改了我的问题,以便我给出的示例不会令人困惑。
    • 那么您的矩阵是 3 维的,您需要对 4 维采取行动。我更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多