傅里叶变换的文件将数据转移到左边。

1视图(30天)
你好!
我想做一些自动化的傅里叶分析在信号使用下面的代码:
f = readmatrix (“1. csv”)
l =长度(f)%长度的信号
fs = 1500%采样频率
ts = 1 / fs%采样时间
t = (0: l - 1) * ts%的时间向量
情节(1000 * t (1:50), f (1:50))
包含(则(女士))
ylabel (“振幅(V)”)
标题(“信号”)
ff = fft (f)
p2 = abs (ff / l);
p1, p2 (1: l / 2 + 1);
fhz = f * (0: (l / 2)) / l;
情节(fhz p1)
标题(“一站”)
包含(的频率(赫兹))
ylabel (“振幅”)
然而,当我用左readmatrix它变化数据和傅里叶变换的高峰将在错误的位置。
文件“1。csv”只是一个通用的正弦曲线我在matlab生成50赫兹频率和振幅的1,这个脚本可以处理好当我定义“f”是正弦函数本身。这个问题只出现当我使用任何类型的数据文件来定义函数。
我希望有人可能会遇到类似的问题之前和发生在知道答案或可能的解决方案。
提前谢谢!
3评论
乔纳斯
乔纳斯 2022年5月4日
现在没有可用matlab,你创建的t和每秒1000样品的采样频率,在分析代码假设1500 Hz。如果我没弄错的话,这将导致你谱的转变

登录置评。

接受的答案

乔纳斯
乔纳斯 2022年5月4日
编辑:乔纳斯 2022年5月4日
现在没有可用matlab,你创建的t和每秒1000样品的采样频率,在分析代码假设1500 Hz。如果我没弄错的话,这将导致你谱的转变
编辑:我只是检查,我的假设是正确的。正确的采样频率分析代码中或在创建代码,这样它们euqual
另一个观点:
如果你使用单侧谱,请非0的值频率值乘以2,得到正确的值
和:建立t向量略inprecise因为它不会创建你要求的时间间隔,或者使用点符号相反,以确保正确的时间间隔
fs = 1000;
t = 0:1 / fs: 10 - 1 / f;
%或t = linspace (0, - 1 / fs, fs * 10);
罪f = 3 +(2 *π* 50 * t);%添加一些直流偏置不乘以2
次要情节(1、2、1);
l =长度(f);%长度的信号
ts = 1 / f;%采样时间
t = (0: l - 1) * ts;%的时间向量
情节(1000 * t (1:10 0), f (1:10 0))
包含(则(女士))
ylabel (“振幅(V)”)
标题(“信号”)
ff = fft (f);
p2 = abs (ff / l);
p1, p2 (1: l / 2 + 1);
p1(2:结束)= p1(2:结束)* 2;%双频率除0赫兹(抵消或的意思)
fhz = f * (0: (l / 2)) / l;
次要情节(1、2、2);
茎(fhz p1,“。”)
标题(“一站”)
包含(的频率(赫兹))
ylabel (“振幅”)

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!