我已经制作了这个脚本来计算给定数据集的频率,但是matlab不够精确,是否有可能让matlab读取更精确的数字并且不切断数字?现在我想它使用8个位数(0.12345678),而不是4(0.1234),这是不Matlab读取精度更高的数字
fid = fopen('forceCoeffs.dat','rt');
A = textscan(fid, '%f%f%f%f%f%f', 'HeaderLines',9,'Collect', 9);
A = A{1};
fclose(fid);
t = A(:,1);
Fs = 1/(A(1,1));
x = A(:,2)
x = detrend(x,0);
xdft = fft(x);
freq = 0:Fs/length(x):Fs/2;
xdft = xdft(1:length(x)/2+1);
plot(freq,abs(xdft));
[~,I] = max(abs(xdft));
fprintf('Maximum occurs at %d Hz.\n',freq(I));
文件:https://drive.google.com/file/d/0B9CEsYCSSZUSb1JmcHRkbFdWYUU/view?usp=sharing
['格式long'](https://www.mathworks.com/help/matlab/ref/format.html)? –
MATLAB使用浮点数。它不是四舍五入的。如果您只有四位数字的精度,那么要么是文件中的所有内容,要么是错误地读取文件。确保你不只是看着控制台上打印的内容,因为MATLAB可以让这些内容更容易阅读。 – nalyd88