MATLAB计算特定间隔,跨数据移位。

时间:2015-11-11 23:01:47

标签: matlab

所以,我正在处理一个电子表格,其中每行有四个重要的列: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单位宽的感兴趣区域,并且可以在其当前位置的中心吐出一个值。

我可以提供计算笛卡尔分量和特征值的代码,虽然我不认为它与我想要做的事情非常相关。这似乎主要是一个不知道在互联网上搜索什么的问题,所以如果有人能指出我正确的方向,我会很感激。

1 个答案:

答案 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