【matlab】错误使用 fft

代码是快速傅里叶算法,将时域信号转化成频域信号

ppgwatch=evalin('base','ppgwatch');
y=ppgwatch(:,2);
Fs=10;
T=1/Fs;
N=height(y);
t=(0:1:N-1)*T;
t=t';
Y=fft(y);
Y=Y(1:N/2+1);
A=abs(Y);
f=(0:1:N/2)*Fs/N;
f=f';

报错:错误使用 fft
数据类型无效。第一个参数必须为双精度值、单精度值、int8、uint8 或逻辑值。

你可以使用 table2array 函数将表格转换为数组,然后再将该数组作为参数传给 fft 函数:

y = table2array(ppgwatch(:, 2));
Y = fft(y);

确保一下表格 ppgwatch 的第二列包含的数据是双精度值、单精度值、int8、uint8 或逻辑值之一,否则你仍然会收到错误提示。

我建议你将代码改为如下所示:

ppgwatch = evalin('base', 'ppgwatch');
y = ppgwatch(:, 2);
Fs = 10;
T = 1 / Fs;
N = length(y);
t = (0 : 1 : N - 1) * T;
t = t';
Y = fft(y);
Y = Y(1 : N / 2 + 1);
A = abs(Y);
f = (0 : 1 : N / 2) * Fs / N;
f = f';

请注意,我修改了计算信号长度和频率的方式。

如果上述代码仍然有问题,请提供详细的错误信息。