向矢量添加像素

时间:2013-02-20 14:54:59

标签: matlab vector

我在matlab中有以下功能。

function s = value(x, y)
            for i=1:length(y)
                for j=1:length(y)
                    if y(i,j) ~= 0.5;
                        pixels = x(i,j);
                    end
                end
            end
            pixels
        end

当我运行它时,我只是在结果中得到最后像素。如何获得所有结果的向量?

感谢。

3 个答案:

答案 0 :(得分:3)

您需要保留索引:

function pixels = value(x, y)

pIndex = 1;

for i=1:length(y)
   for j=1:length(y)
      if y(i,j) ~= 0.5;
         pixels(pIndex) = x(i,j);
         pIndex = pIndex + 1;
      end
   end
end

pixels

end

但是,您应该将代码矢量化以使其更有效且易于阅读,该功能可以替换为:

pixels = x(y ~= 0.5)

答案 1 :(得分:1)

pixels(end+1)=x(i,j)在左侧向量的最后一个元素后面的右侧添加值。

但是s = x(y~=0.5)或类似的东西呢?肯定有一个矢量化解决方案。

答案 2 :(得分:0)

我对matlab不太熟悉,但你似乎每次迭代都会覆盖pixels

不是用pixels替换pixels = x(i,j);每次迭代的值,而是pixels += x(i,j);你可以做什么?

如果pixels不仅仅是一个值,而是一个数组或类似的数据结构,则需要更新每次迭代的索引,以便将值与前一次迭代分开存储,这样就可以了不会覆盖之前的值。