nlfilter两次取相同的值
|
我将ѭ0用作我的测试函数,如下所示:
function funct
clear all;
clc;
I = rand(11,11);
ld = input(\'Enter the lag = \') % prompt for lag distance
A = nlfilter(I, [7 7], @dirvar);
% Subfunction
function [h] = dirvar(I)
c = (size(I)+1)/2
EW = I(c(1),c(2):end)
h = length(EW) - ld
end
end
该函数可以正常工作,但是可以期望nlfilter
逐个元素进行,但是在前两次迭代中,EW的值将等于0.2089 0.4162 0.9398 0.1058
。但是随后所有迭代都选择了下一个元素,第3个元素为0.4162 0.9398 0.1058 0.1920
,第4个元素为0.9398 0.1058 0.1920 0.5201
,依此类推。为什么会这样呢?
没有找到相关结果
已邀请:
2 个回复
屉杆绊
作为EW的第一个输出,您对eval的第4行调用是观察到的,但是除了使b矩阵成为正确的类之外,它不用于其他任何事情。所有正确的迭代都在下面的for循环中进行。这意味着您观察到的\“ duplicate \”值不会影响最终的输出矩阵,因此您不必担心。
疼嘶桐
函数的作用是什么?它不会为您提供矢量的欧几里得长度,而是为您提供矢量的最大尺寸(因此,在您的情况下,应为4)。如果需要欧几里得长度(或2范数),请改用函数
。如果您的代码执行正确的操作,则可能需要使用类似以下内容的代码:
在您的示例中,这意味着根据您提供的滞后,输出应该是恒定的。还要注意,您可能希望在分函数的每一行之后加上分号,并且将“ 10”用作函数的第一行是没有用的,因为函数将始终在其自己的工作空间中执行(但是,这将清除持久变量或全局变量,但是您不在代码中使用它们)。