之前我有一个question,但它没有这个完整!实际上,我的意思是我有一个嵌套的if-for循环,我之前没有说清楚。
所以,我有一个非常长的代码,其中包含以下内容"如果" s和matlab编辑器给我一个建议如下:
这种稀疏索引表达式可能很慢
有什么办法可以让我更快地编写代码并提出matlab的建议吗? (代码可能无法运行,因为我选择了几行并尝试显示问题)
在我之前的问题中,我没有解释我需要使用i,j作为索引,所以答案并不令人信服。但是,正如你在这里看到的,我需要使用i和j作为索引,这使得问题与前一篇文章略有不同。
template = rand(200,200);
grid = rand(200,200);
T = size(template);
rws = size(grid,1);
cols = size(grid,2);
ind = "it is a matrix";
A = sparse(rws*cols,rws*cols);
T = sparse(rws*cols,2);
border_grid = 0;
border_template = 0;
template_comp = 0;
grid_comp = 0;
for i = 1:cols
for j = 1:rws
if(ind(j,i)==255)
Asr=grid(j,i,1);
Bsr=template(((j-posy)+1),((i-posx)+1),1);
Snorm= ((Asr-Bsr)^2)^(1/2);
if (( (j+1) > 0) && ((j+1) <= rws))
if ( ind(j+1,i)==0)
T((i-1)*rws+j,1)=100000;
border_grid=border_grid+1;
end
if ( ind(j+1,i)==128)
border_template=border_template+1;
T((i-1)*rws+j,2)=100000;
end
if( (ind(j+1,i)==255))
Atr=grid(j+1,i,1);
Btr=template(((j+1)-posy)+1,(i-posx)+1,1);
Tnorm= ((Atr-Btr)^2)^(1/2);
A((i-1)*rws+j,(i-1)*rws+(j+1))=Snorm+Tnorm;
end
end
end;
**+ some other similar if-loops**
end
end