MATLAB计算特定区间,跨数据移动。

MATLAB计算特定区间,跨数据移动。,matlab,Matlab,因此,我正在使用一个电子表格,其中每行有四个重要列:x位置(0-7000个单位)、y位置(0-7000个单位)、θ角(0-90)和φ角(0-360)。我已经编写了脚本,我需要将θ和φ转换为笛卡尔坐标,然后计算整个数据集的特征值,与位置无关 现在,我想做的是,从(x,y)排列的左侧开始,取一个截面,比如说200个单位宽,然后对该区域(x=0到200)的所有数据进行相同的计算,并在该截面的中心(x=100)记录特征值,然后将该区域向右移动20个单位,然后重复,以此类推,直到200个单位的广域范围完全

因此,我正在使用一个电子表格,其中每行有四个重要列:x位置(0-7000个单位)、y位置(0-7000个单位)、θ角(0-90)和φ角(0-360)。我已经编写了脚本,我需要将θ和φ转换为笛卡尔坐标,然后计算整个数据集的特征值,与位置无关

现在,我想做的是,从(x,y)排列的左侧开始,取一个截面,比如说200个单位宽,然后对该区域(x=0到200)的所有数据进行相同的计算,并在该截面的中心(x=100)记录特征值,然后将该区域向右移动20个单位,然后重复,以此类推,直到200个单位的广域范围完全转移到7000个单位的范围

基本上,我想做一种移动平均法,其中特征值计算是我的滤波器,感兴趣区域的宽度决定平滑度。我只是还没有弄明白如何写一个循环,它可以推进200个单位宽的感兴趣区域,并且可以在它当前位置的中心吐出一个值


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

希望下面的代码段能给你一个想法

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

这是一个相当简单的循环。你有什么特别的问题?哦,只是我不太擅长这些。我真的不知道如何设置200个单位宽的部分,以20个单位的增量“扫描”整个数据,并让它给我一个可用的输出(该间隔的特征值与相应的、居中的x值),这有助于一吨!好极了