Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm Matlab中矩阵相邻元素的转换_Algorithm_Matlab_Matrix - Fatal编程技术网

Algorithm Matlab中矩阵相邻元素的转换

Algorithm Matlab中矩阵相邻元素的转换,algorithm,matlab,matrix,Algorithm,Matlab,Matrix,我正在研究Brushfire算法,我需要做一个循环,它将扫描矩阵,找到相邻的0和1,并将“1”转换为“2”。假设我有一个5乘5的矩阵: 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 我能不能做到: 0 0 0 0 0 0 2 2 2 2 0 0 2 1 1 0 0 2 1 1 0 0 2

我正在研究Brushfire算法,我需要做一个循环,它将扫描矩阵,找到相邻的0和1,并将“1”转换为“2”。假设我有一个5乘5的矩阵:

0   0   0   0   0
0   1   1   1   1
0   0   1   1   1
0   0   1   1   1
0   0   1   1   1
我能不能做到:

0   0   0   0   0
0   2   2   2   2
0   0   2   1   1
0   0   2   1   1
0   0   2   1   1

谢谢

使用图像处理工具箱,算法将是:

A = [0 0 0 0 0 
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1];

B = A;

%# set pixels at border between 0 and 1 to 2
B(imdilate(~A,true(3)) & A>0) = 2;

使用图像处理工具箱,算法将是:

A = [0 0 0 0 0 
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1];

B = A;

%# set pixels at border between 0 and 1 to 2
B(imdilate(~A,true(3)) & A>0) = 2;

使用图像处理工具箱,算法将是:

A = [0 0 0 0 0 
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1];

B = A;

%# set pixels at border between 0 and 1 to 2
B(imdilate(~A,true(3)) & A>0) = 2;

使用图像处理工具箱,算法将是:

A = [0 0 0 0 0 
0 1 1 1 1
0 0 1 1 1
0 0 1 1 1
0 0 1 1 1];

B = A;

%# set pixels at border between 0 and 1 to 2
B(imdilate(~A,true(3)) & A>0) = 2;

您可以使用标准函数进行二维卷积。将矩阵表示为
X

mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
X(conv2(double(~X), mask, 'same') & X) = 2;

您可以使用标准函数进行二维卷积。将矩阵表示为
X

mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
X(conv2(double(~X), mask, 'same') & X) = 2;

您可以使用标准函数进行二维卷积。将矩阵表示为
X

mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
X(conv2(double(~X), mask, 'same') & X) = 2;

您可以使用标准函数进行二维卷积。将矩阵表示为
X

mask = [0 1 0; 1 1 1; 0 1 0]; %// or [1 1 1; 1 1 1; 1 1 1] to include diagonal adjacency
X(conv2(double(~X), mask, 'same') & X) = 2;

非常感谢你,努奇·乔纳斯!非常感谢你,努奇·乔纳斯!非常感谢你,努奇·乔纳斯!非常感谢你,努奇·乔纳斯!