Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未定义函数';快速傅立叶变换';对于类型为';sym';MATLAB_Matlab_Fft - Fatal编程技术网

未定义函数';快速傅立叶变换';对于类型为';sym';MATLAB

未定义函数';快速傅立叶变换';对于类型为';sym';MATLAB,matlab,fft,Matlab,Fft,我试图用周期为π的正弦波制作一个高达30Hz的频谱。我写了一段代码,但我不断得到错误:输入参数类型为“sym”的未定义函数“fft” sint = sin(t); Tmax = 2*pi; %the end sample value Ts = 0.1; %the sampling rate N = (Tmax/Ts)+1; %The number of samples Fs = 1/Ts; t = 0:Ts:Tmax; plot(t,sint); f = 0:fs/(N-1):30; z

我试图用周期为π的正弦波制作一个高达30Hz的频谱。我写了一段代码,但我不断得到错误:输入参数类型为“sym”的未定义函数“fft”

sint = sin(t);
Tmax = 2*pi;  %the end sample value
Ts = 0.1;   %the sampling rate
N = (Tmax/Ts)+1;  %The number of samples
Fs = 1/Ts;
t = 0:Ts:Tmax;
plot(t,sint);
f = 0:fs/(N-1):30;
z = fftshift(fft(sint));
plot(f,z);

fft
是一种数值算法,它接受数值输入,而不是符号输入。我怀疑你在将
t
声明为符号。只需移动该
t
分配,并在代码开头定义采样频率
Fs
、采样时间
Ts
和最大时间
Tmax
,就可以开始了。如果我能提出一些建议,请在一个图形中显示时域,在另一个图形中显示频域。使用
子批次
帮助您完成此操作。我还建议您绘制幅值,因为FFT通常会给出复数系数。幅度是我们通常看到的关于信号中频率内容的大小

我还有一个建议,就是改变声明
f
向量的方式。我不知道一般意义上的
f
的结束元素是什么,它看起来与
t
的定义方式不一致。我对
f
向量做了一个更改,使其能够工作。因为您正在应用
fftshift
,所以开头从
-Fs/2
开始,结尾是
Fs/2
。因此:

%// Move here
Tmax = 2*pi;  %the end sample value
Ts = 0.1;   %the sampling rate
Fs = 1/Ts;
t = 0:Ts:Tmax;

sint = sin(t);
N = (Tmax/Ts)+1;  %The number of samples
figure; subplot(2,1,1); %// Change
plot(t,sint);
%f = 0:fs/(N-1):30; %// Change here
f = linspace(-Fs/2, Fs/2, numel(t)+1);
f(end) = [];   
z = fftshift(fft(sint));
subplot(2,1,2); %// Change
plot(f,abs(z)); %// Change

fft
是一个数值函数,不接受符号参数。使用
linspace
或其他相关方法以数字方式定义
t
,应该可以。这里还有一个象征性的flourier转换,但我看不出在这里使用它的真正原因:谢谢!但是如果我只找到bn(sin-Fourier级数的系数)并通过exp^jwt的叠加应用FT,它会起作用吗?我刚刚应用了你的代码,但我仍然得到相同的错误…我没有得到任何错误。请注意,我必须纠正一些拼写错误,如
fs
fs
。尝试通过执行
全部清除来清除您的工作区然后重试。此外,我还更新了我的代码。@AbylIkhsanov-根据定义,傅里叶变换可以在输入信号和
exp(-jwt)
的倍数之间找到相关性。同样地,看看这个定义:-傅里叶级数的每个项被定义为实(
a\n
)和虚
(b\n)
分量的组合。因此,您可以通过检查FFT分解的虚部来找到您的
b_n
。这真的很有帮助!谢谢你。“阿比利奇萨诺夫-我的荣幸:”如果你不需要更多的帮助,请考虑接受我的回答。祝你好运再次编辑我的代码。它现在应该为你运行了。