Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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
Matlab中的光栅扫描_Matlab_Raster - Fatal编程技术网

Matlab中的光栅扫描

Matlab中的光栅扫描,matlab,raster,Matlab,Raster,我正试图为一个涉及指纹识别的更大项目编写代码。我正在尝试使用blockproc,它占用我的128x128矩阵的3x3“窗口”。我有一个52x9矩阵,矩阵的每一行都描述了一个分叉模式。我需要做的是从128x128矩阵中取出3x3块,同时从左到右、从上到下移动。然后使用神经网络将每一块与分叉模式矩阵进行比较。我需要进行光栅扫描,以确保获得128x128矩阵的所有可能的3x3表示形式。换句话说,我需要向右移动1个像素,获得3x3窗口,运行网络,然后再移动1个像素,等等。如果我不能再向右移动(不能再创建

我正试图为一个涉及指纹识别的更大项目编写代码。我正在尝试使用blockproc,它占用我的128x128矩阵的3x3“窗口”。我有一个52x9矩阵,矩阵的每一行都描述了一个分叉模式。我需要做的是从128x128矩阵中取出3x3块,同时从左到右、从上到下移动。然后使用神经网络将每一块与分叉模式矩阵进行比较。我需要进行光栅扫描,以确保获得128x128矩阵的所有可能的3x3表示形式。换句话说,我需要向右移动1个像素,获得3x3窗口,运行网络,然后再移动1个像素,等等。如果我不能再向右移动(不能再创建3x3窗口),我将向下移动1个像素,然后再次重复水平扫描过程。例如:

一个简单的3x5阵列:

A = [10 11 12 13 14;
     15 16 17 18 19;
     20 21 22 23 24];
使用2x3窗口执行光栅扫描将产生以下矩阵

A1 = [10 11 12;
      15 16 17];

A2 = [11 12 13;
      16 17 18];

A3 = [12 13 14;
      17 18 19];

A4 = [15 16 17;
      20 21 22];

A5 = [16 17 18;
      21 22 23];

A6 = [17 18 19;
      22 23 24];
请记住,默认情况下,MATLAB始终沿行运行,因此需要翻转A和块大小。您可以检查由
colfilt()
内部调用的块序列:


其中,每列依次为A1、A2、。。。或者更准确地说,
重塑(A1',[],1)
重塑(A2',[],1)
,两个循环有什么问题?一个用于行,一个用于列:

for row=1:128-3

for col=1:128-3

subMatrix = M(row,col:col+3)

% send to neural network function
end

end

有什么问题吗?您在生成A1-A6算法(或数据集的等效算法)时有困难吗?我在从给定矩阵生成A1-A6时有困难。我可能会想出一些带有if条件的for/loop来检查是否可以形成3x3矩阵,但如果可能的话,我宁愿尝试使用一个函数。我不确定哪一个计算速度更快。谢谢你,这个函数从来都不是什么新鲜事。我想我也可以使用循环,因为我需要跟踪结果。Matlab中的循环是致命的slow@user2151446你错了,我的朋友!当您需要循环并且没有其他选择时,请使用循环
for row=1:128-3

for col=1:128-3

subMatrix = M(row,col:col+3)

% send to neural network function
end

end