如题,用下面的代码找(f,A)曲线最高点的横坐标,得出结果是1
但是很显然f=1的时候A不是最大值
ppgwatch=evalin('base','ppgwatch');
y=ppgwatch(:,2);
N=height(y);
y = table2array(ppgwatch(:, 2));
%save('y.mat','y');
y_filtered=filter(daitong,y);
save('y_filtered.mat','y_filtered');
Fs=10;
T=1/Fs;
t=(0:1:N-1)*T;
t=t';
Y = fft(y_filtered);
Y=Y(1:N/2+1);
A=abs(Y);
f=(0:1:N/2)*Fs/N;
f=f';
plot(f,A);
xlabel=('hz');
ylabel=('幅值');
[MAX,MAXdix]=max(A);
你这样调用max返回的MAXdix是最大值的行号。所以你应该指定一下维度max(A,[],dim),这个dim由你自己指定 1 或2
这个问题是因为在计算最大值的横坐标时,MAXdix变量表示的是在频谱数组A中最大值的索引,而不是在原始信号数组y中的索引。如果要得到原始信号数组y中的索引,需要对MAXdix变量进行转换。
例如:
index_y = MAXdix*N/length(A);
这样就可以得到原始信号数组y中最大值的索引了。