线性索引
上周我发了一个介绍逻辑索引。本周我想继续一个简短的讨论线性索引在MATLAB图像处理及其连接。
让我们先从一个小矩阵。打破传统,我将使用一个希尔伯特矩阵而不是幻方:
一个= hilb (5)
= 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111
突击测验:MATLAB表达式(17)的意思吗?
(17)
ans = 0.2000
MATLAB解释一个下标索引向量包含所有的值一个列顺序。所以(17)是一样的(2、4)。
(2、4)
ans = 0.2000
这就是所谓的线性索引。
到图像处理的连接是什么?假设一个我们的形象,一些先前的计算告诉我们,我们感兴趣的是在这些行和列坐标像素值:
行= (2 1 5);坳= [1 3 4];
我们可以在单个表达式中提取所需的像素值吗?让我们试一试:
坳(行)
ans = 0.5000 0.2500 0.2000 1.0000 0.3333 0.2500 0.2000 0.1429 0.1250
我们有九个值,并不是三个,所以肯定不是我们正在寻找。MATLAB计算坳(行)的子矩阵一个由指定的行和列的十字路口。
而不是索引到一个使用行和列下标,我们需要使用一个下标索引。
下面是如何从row-column下标转换成线性指数:
M =大小(1);idx = M * (col - 1) +行
idx = 2 11 20
表达式(idx)拿出我们想要的三个值:
(idx)
ans = 0.5000 0.3333 0.1250
或者我们可以分配给这些元素:
(idx) =正无穷
0.2500 - 0.2000 = 1.0000 - 0.5000正正0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.2000 0.1667 0.1429正无穷
的函数sub2ind(“下标”“指数”)ind2sub之间来回转换row-column下标和线性指数。
idx = sub2ind(大小(A)、行、坳)
idx = 2 11 20
[r、c] = ind2sub(大小(A), idx)
r = 2 1 5 c = 1 3 4
的详细图像处理实例说明线性索引,看看这些以前的帖子:
- 类别:
- 索引
评论
留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。