clc;
clear;
close all;
%采集频率
Fs=1000;
%产生序列
n=0:1/Fs:1;
xn=load('wo 0.mat');
xn=xn.xc;
%设置参数
nfft=1024;%FFT的点数
%直接发
Xk=fft(xn,nfft);
%计算序列的PSD
Pxx=abs(Xk).^2/length(n);
%绘制图形
index=0:round(nfft/2-1);
k=index*Fs/nfft;
plot_Pxx=10*log10(Pxx(index+1));
plot(k,plot_Pxx);
[max_value,index]=max(Pxx);
A=max_value
B=index
X=B-20:B+20
Y=Pxx;
Z=trapz(X,Y)
??? Error using ==> trapz
LENGTH(X) must equal the length of the first non-singleton dimension of Y.
其中X是积分范围,Y是要积分的函数,Z是积分值
帮忙看看,怎么改积分才好用,谢谢,在线等

14.88 KB, 下载次数: 2775
4 条回复

主要是X和Y的长度不一致,用trapz函数求确定时间X范围内对Y的积分时,X和Y必须是同维的矢量。
在你的题目中,X=B-20:B+20;是1行41列的行向量,而Y是2048点功率谱密度的前面一半,长为1024点。
要改的话或者把功率谱密度的范围缩小,或者把X的长度加长就可以了

那有没有不改变X,Y,换别的积分函数可用的,或怎修改了密度范围后,积分的效果会不会和没改前的积分一样。
[

可以把密度范围不变,但是间隔缩小,这样同样可以达到长度一致
比如你现在的X=B-20:B+20;默认是以1为步长,那么就只有41个取值,变为X=B-20:0.1:B+20;这样就有401个取值,以此类推,范围不变,间隔缩小,就可以得到你想要的积分值

谢谢了 ,明白