繁体   English   中英

此Python for循环的Octave / Matlab版本

[英]Octave/Matlab version of this Python for-loop

我只想知道在python中这个特定的for循环是否有任何Octave / Matlab等效语法:

for (i,j) in [(1,2),(2,3),(3,4),(4,5),(5,6),(6,7)]:
    a[i,j] = 1

我需要它来简化我的图像处理任务,在这里我可以轻松构造图像矩阵,而不必为图像矩阵的几乎每个元素输入每个像素值。 因此,如果还有其他方法可以在Octave / Matlab中实现上述功能,请告诉我。

谢谢。

在Octave中,我想也可以在MATLAB中执行以下操作:

for ij = [{1;2} {2;3} {3;4} {4;5} {5;6} {6;7}]
    a(ij{:}) = 1;
end

但总的来说,在MATLAB和Python中,最好防止循环。 PythonMATLAB中都有许多有效的索引方法。

如果你想设置一系列像素a由坐标给出相同的值,你可以做如下:

coord = [1,2; 2,3; 3,4; 4,5; 5,6; 6,7];
ind = sub2ind(size(a), coord(:,1), coord(: 2));
a(ind) = 1;

您可以替换最后1作为坐标与尽可能多的元素的向量coord分配不同的值到每个像素。

注意与第一索引MATLAB索引行,这样的第一列coord对应的y坐标。

这里最简单的是:

for i = 1 : 6
   a(i, i+1) = 1; % Alternatively: j=i+1; a(i,j)=1;
end

更灵活的选择是构造对:

vals = [1,2; … ; 6,7]; % Your i,j pairs. Possibly even put 3 numbers there, i,j,value.
for i = 1 : size(vals, 1)
   a(vals(i,1), vals(i,2)) = 1;
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM