我想将m(i,j)值存储在一个由2行组成的一维数组中。第1行wd是m(ij)计数器,第2行w是每个iteration.How的m(ij)值,我可以这样做吗?请帮帮忙。想要像数组一样将二维数组转换为一维数组(2,计数)。
[e,f] = size(outImg);
m = zeros(e,f);
counter=0
w = [1 2 4 8; 16 32 64 128; 256 512 1024 2048; 4096 8192 16384 32768];
for i = 1:e-3
for j = 1:f-3
I = double(outImg((i:i+3),(j:j+3)));
counter=counter+1;
m(i,j) = sum(sum(I .* w));
end
end发布于 2014-11-17 14:46:00
在您的代码中,最快的方法(虽然不一定是最有效的,但与您的代码最兼容)将分配一个2D数组,并在每次迭代时填充这个数组。引用my previous post to you,此循环迭代的总次数为(e-3) x (f-3)次数。因此,像你在帖子中所说的那样,分配一个2D数组。只有这一次,将count替换为(e-3)*(f-3)。
如下所示:
[e,f] = size(outImg);
m = zeros(e,f);
counter=0;
counts = zeros(2, (e-3)*(f-3)); %// NEW
w = [1 2 4 8; 16 32 64 128; 256 512 1024 2048; 4096 8192 16384 32768];
for i = 1:e-3
for j = 1:f-3
I = double(outImg((i:i+3),(j:j+3)));
counter=counter+1;
m(i,j) = sum(sum(I .* w));
counts(:,counter) = [counter; m(i,j)]; %// NEW
end
end因此,您将有一个名为counts of size 2 x (e-3)*(f-3)的2D数组,其中每一列都表示“迭代次数”和循环中每个迭代中每个像素邻域的总和的值。
https://stackoverflow.com/questions/26975140
复制相似问题