未定义的函数' symsum'对于类型' double'的输入参数

时间:2018-02-03 11:30:02

标签: matlab signal-processing

我正在尝试为方波信号和均匀分布的噪声信号生成可变傅立叶级数。

这是我的代码,我有这个错误

未定义的功能' symsum'对于' double'类型的输入参数。

fs = 1000;       %Sampling  frequency Hz [1 1000]
l = 1 ;         %Signal length sec [1 10]

% Fourier Series Parameter
h = 1;    %Amplitude [0 10]; default 1
k =1 ;  %Fourier Series lenght(k);[1 21]

% Noise Signal specific parameters

h1 = 1;  %Amplitude (h); [0 10]; default: 1

%calculate signal
%x = 0:1/fs:L-1/fs; 

x = 0:1/fs:l-1; 

n = [1; Inf];
f(x) = 4*h/pi * symsum( (1./k) * sin((2*pi*k*x)),k,2*n-1,n); %Fourier series for a square wave signal

%uniformly distributed noise signaL
%Noise signal specific parameters
%Amplitude (h); [0 10]; default: 1
h2 = 1 ; % Noise Amplitude

sig_Noise = h2*(f(x) + sigma*randn(1,length(x))); %  signal with phase  & amplitude noise 

plot(x,f(x)) 

我的总结在这里Summation 我该怎么解决?

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

fs = 1000; %Sampling Frequency Hz [1 1000]
l = 10; % Signal Length sec [1 10]
h = 1; % Amplitude [0 10] - Default 1
h2 = 1; % Noise Amplitude
sigma = 1;
x = 0:(1/fs):(l-1);

syms k;
syms f(x);
f(x) = 4*h/pi() * symsum((1/k)*sin(2*pi()*k*x),k,1,Inf); % Fourier series for a square wave signal

fplot(x,f(x));

实际上,如果你想使用符号数学......你必须使用可以使用syms关键字声明的符号变量。对于绘图,必须使用fplot函数而不是plot