所以,我正在处理一个电子表格,其中每行有四个重要的列:x位置(0-7000单位),y位置(0-7000单位),θ角度(0-90),和ph角(0-360)。我编写了将theta和phi转换为笛卡尔坐标所需的脚本,然后计算整个数据集的特征值,与位置无关。
现在,我想做的是,从(x,y)点差的左边开始,取一个宽200个单位的部分,对所有落入的数据进行相同的计算。那个区域(x = 0到200),并记录该区域中心的特征值(x = 100),然后将区域移动到右边20个单位并重复,依此类推,直到200个单位宽区域有完全跨越7000单位差价。
基本上,我正在寻找一种移动平均线,其中特征值计算是我的滤波器,并且感兴趣区域的宽度决定了平滑程度。我还没弄清楚如何编写一个循环来推进200单位宽的感兴趣区域,并且可以在其当前位置的中心吐出一个值。
我可以提供计算笛卡尔分量和特征值的代码,虽然我不认为它与我想要做的事情非常相关。这似乎主要是一个不知道在互联网上搜索什么的问题,所以如果有人能指出我正确的方向,我会很感激。
答案 0 :(得分:0)
希望以下代码段能给你一个想法。
clc; clear all;
in = rand(20,1); % assume a 20*1 matrix
w = 5; % range from middle
j = 2; % jump
for i = 1+w:j:size(in,1)-w
in(i,2) = mean(in(i-w:i+w,1));
fprintf('\ni = %d\trange = %d:%d\tavg = %f', i, i-w, i+w, in(i,2));
end
以下是输出。
i = 6 range = 1:11 avg = 0.528908
i = 8 range = 3:13 avg = 0.501255
i = 10 range = 5:15 avg = 0.531217
i = 12 range = 7:17 avg = 0.557450
i = 14 range = 9:19 avg = 0.570374