-3

我在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

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

谢谢。

4

3 回答 3

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)
于 2013-02-20T15:02:00.230 回答
1

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

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

于 2013-02-20T14:58:36.733 回答
0

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

除了用 替换pixels每次迭代的值pixels = x(i,j);,还有什么pixels += x(i,j);可以做的吗?

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

于 2013-02-20T14:59:10.083 回答