信息强度计算公式,能否通过编程进行计算吗

前些天学习了滑动计算但是只能进行简单的编程计算,今天另外看到了信号强度也是与滑动计算相关的,也知道了信息强度计算公式,能否通过编程进行计算滑动相关最大值位置呢

img

例假设 x[] = {1,2,0,4 };
y[] = {1,4,6,3,4,1,5,1,8,9,4,2,3,4,5,0};

用matlab几行就能解决:

clc,clear,close all;  %清屏
x = [1,2,0,4];
y = [1,4,6,3,4,1,5,1,8,9,4,2,3,4,5,0];
x0 = [x,zeros(1,length(y)-length(x))]; %末尾补零
P = sum(sqrt(x0.^2+y.^2))  %信息强度

img

img

加上求两个序列互相关:两种方法,一个是用相关的定义式,另一个是利用将其中一个信号翻转后再计算卷积

clc,clear,close all;  %清屏
x = [1,2,0,4];
y = [1,4,6,3,4,1,5,1,8,9,4,2,3,4,5,0];
x0 = [x,zeros(1,length(y)-length(x))]; %末尾补零
P = sum(sqrt(x0.^2+y.^2))  %信息强度

%相关
%1.直接用xcorr来求相关
y_xcorr1 = xcorr(x, y)
%2.利用卷积conv来求相关
y1 = y(end: -1: 1);%序列翻转
y_xcorr2 = conv(x, conj(y1))

img

卷积定义式:和相关很像

img

额,信号处理里面的Fir加权计算

你都说了滑动分窗了,这我就不提了。 我们说后面的,既然你可以4组平滑移动开窗,我假设你开窗结果的第一个结果是
{1,4,6,3}
那么x其实是就是Fir的抽头加权系数,结果为
11+24+06+43

如果你还不清楚,建议你看看信号处理的FIR滤波过程(当然信号处理开窗函数可能不是平滑移动,而是汉明窗口这类了)

x数组和y数组数量不相等啊,怎么玩呢?
如果相等,不就是一个循环的事么
x就是,y就是b吧?

可以呀,MATLAB最快