【问题标题】:Get better performance for converting matrix to vector获得更好的将矩阵转换为向量的性能
【发布时间】:2015-07-22 20:41:54
【问题描述】:

在处理图像时,通常它们包括 3 层 (RGB)。为了进行一些计算,我需要将图像的每一层转换为向量。

I1 = ones(70,50,3);       % the first image
I2 = 0.4 * ones(70,50,3); % the second image
for dd = 1:3
    ILayer1 = I1(:,:,dd);
    ILayerLinear1 = ILayer1(:);
    ILayer2 = I2(:,:,dd);
    ILayerLinear2 = ILayer2(:);
    comp = ILayerLinear1 * ILayerLinear1.';
end

这里我用一个非常简单的计算代替了主要的计算部分,但这不是重点。 有没有更好的方法来不重复矩阵到向量的转换,或者更有效地做到这一点?因为它可能通过代码多次发生。

更新:

我也可以如下定义一个函数来传递一个图像并检索一个向量,但它仍然没有改进代码。

function V = I2V(I)
[r,c,d] = size(I);
V = zeros(d,r*c);
for dd = 1:d
    layer = I(:,:,dd);
    V(dd,:) = layer(:);
end
end

【问题讨论】:

    标签: performance matlab


    【解决方案1】:

    我不确定外部产品,但其他的都在这里。

    I1 = reshape(1:70*50*3, 70,50,3);
    I2 = 0.4*reshape(1:70*50*3, 70,50,3);
    
    i1 = reshape(I1, [], 3);
    i2 = reshape(I2, [], 3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-10
      • 2016-04-01
      • 1970-01-01
      • 2021-04-29
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多