Why does my for-loop nested in an if-statement not work?
3 次查看(过去 30 天)
显示 更早的评论
I have an for-loop inside an if-statement nested again in another for-loop (I know sounds complicated, example below), which seems to run perfeclty, as long as until the loop is called the SECOND time. Then it gives me the error:
Index exceeds matrix dimensions.
Error in code (line 50)
imb=squeeze(B_proc(n,:,:));
Does anybody have an idea why?
Here the simplified for-if-for-loop:
k=1;
for i=2:length(proc_core)
proc=cell2mat(proc_core(i,2));
sz=size(proc);
l=sz(1);
vs=cell2mat(proc_core(i,3));
if sz(2)==512 && sz(3)==512 && vs==2.5
kl=k+l-1;
Core(k:kl,:,:)=proc;
k=k+l;
elseif vs==2.5
for n=1:length(proc)
imb=squeeze(proc(n,:,:));
imb=imresize(imb,[512 512]);
Core(k,:,:)=imb;
k=k+1;
end
end
end
0 个评论
采纳的回答
Walter Roberson
2016-7-20
length(proc) is defined as:
if isempty(proc)
length = 0
else
length = max(size(proc))
end
You, however, used length(proc) as if it were defined as size(proc,1) . If one of the other dimensions of proc is bigger than the number of rows then that bigger dimension is the length.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!