我在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
当我运行它时,我只是在结果中得到最后像素。如何获得所有结果的向量?
感谢。
答案 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
不仅仅是一个值,而是一个数组或类似的数据结构,则需要更新每次迭代的索引,以便将值与前一次迭代分开存储,这样就可以了不会覆盖之前的值。