【发布时间】:2017-10-02 11:03:05
【问题描述】:
我有一个包含图片的文件夹。对于每张图片,我想取最大值并将其添加到一个新矩阵中(我创建了一个零矩阵,因此零将被新值替换)。
这是我的代码:
function handles = original(hObject, eventdata, handles)
handles.weed=handles.selected;
pic=imread(handles.me);
handles.pic=pic;
axes(handles.axes1)
imshow(pic);
num=max(pic(:))
zeroMat = zeros(1,70);
handles.zeroMat = zeroMat;
for i =1:3
if zeroMat(1,i)~= 0;
i=i+1
else
zeroMat(1,i)=num
break
end
end
zeroMat(1,i)=num
每次我选择一张新图片时,zeromat 都会重新启动到一个新的零矩阵。我知道它为什么会发生,但不幸的是我不知道如何克服它。
这是输出:
图片1:
zeroMat =
Columns 1 through 20
255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 21 through 40
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 41 through 60
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 61 through 70
0 0 0 0 0 0 0 0 0 0
图片2:
Columns 1 through 20
203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 21 through 40
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 41 through 60
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Columns 61 through 70
0 0 0 0 0 0 0 0 0 0
【问题讨论】:
-
您应该修改问题并进行更正。此外,您可能不想在
for i = 1:3循环中使用i = i+1行 -
@Steve 为什么不呢?如果它不为零,我想跳到下一个索引,问题在于矩阵在 foor 循环之后回到零垫
-
在这种情况下你应该使用
continue或者什么都不用;就目前而言,i只是在循环的下一步被覆盖,除非退出循环。 -
您是否正在循环浏览 70 张图片,并希望将
i-th 图片中的最高像素值保存在zeroMat(1,i)中? -
@Steve 我点击了 gui 的图片,然后我希望每次都接收一个最大值,最后得到一个最大值的矩阵
标签: matlab for-loop matrix restart