代码是快速傅里叶算法,将时域信号转化成频域信号
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';
请注意,我修改了计算信号长度和频率的方式。
如果上述代码仍然有问题,请提供详细的错误信息。