使用图像时,通常包含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
这里我用一个非常简单的计算替换了主要计算部分,但这不是重点。 有没有更好的方法可以不重复矩阵到矢量转换,或者更有效地进行转换?因为它可能会在代码中多次发生。
更新
我还可以按如下方式定义一个函数来传递一个Image并检索一个向量,但它仍然没有改进代码。
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
答案 0 :(得分:0)
我不确定外部产品,但是,其他所有内容。
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);