以下冒号(:)在MATLAB语法中是什么意思?

mis*_*tor 6 syntax matlab image-processing

a = imread('autumn.tif');
a = double(a); 
[row col dim] = size(a);
red = a(:, :, 1);
green = a(:, :, 2);
blue = a(:, :, 3);
Run Code Online (Sandbox Code Playgroud)

:最后三行中的冒号是什么意思?(上面的片段来自Dhananjay Theckedath的"图像处理".)

Jon*_*nas 19

:,在这种情况下意味着'所有'.

red = a(:,:,1)
Run Code Online (Sandbox Code Playgroud)

相当于

red = a(1:end,1:end,1)
Run Code Online (Sandbox Code Playgroud)

其中end由Matlab自动替换为相应维度中的元素数量.

那么如果a是一个23乘55乘3的阵列,

a(:,:,1) 
Run Code Online (Sandbox Code Playgroud)

a(1:23, 1:55, 1)
Run Code Online (Sandbox Code Playgroud)

这意味着,这将占用所有行,所有列都来自第一个"平面" a.由于RGB图像由红色,绿色和蓝色组成plane(按此顺序),因此a(:,:,1)是图像的红色成分.

  • *slice*可能不是这个场景中最好的词.`x(5:10)`是一个切片.共享第三个索引的元素集是*plane*.方便的是,许多图形文献也提到了*彩色平面*. (2认同)