# FFT error 'not supported to carry out script fft as a function'

3 views (last 30 days)

Show older comments

I want to plot a graph as below. so I wrote a program using fft. but error message 'not supported to carry out script fft as a function' displayed. What should I do?

syms t f

T=5.0*10^(-10);

roll = 0.3;%roll-off β

A = pi*t/T;

x(t)= sin(A)/A*cos(roll*A)/(1-(2*roll*t/T)^2);

ht=matlabFunction(x(t));

y=fft(x(t));

X = f;

Y = y;

plot(X,Y);

formula of x(t),X(f) and graph I want to plot(green line) are shown as follows

##### 0 Comments

### Accepted Answer

Paul
on 9 Dec 2022

Hi 柊介 小山内,

fourier can return a closed form expression with a little help.

syms t w f real

T = sym(5.0)*10^(-10);

roll = sym(0.3);%roll-off β

A = sym(pi)*t/T;

x(t) = sin(A)/A*cos(roll*A)/(1-(2*roll*t/T)^2);

rewrite x(t) in terms of expoentials before taking the Fourier transform.

X(w) = simplify(fourier(rewrite(x(t),'exp'),t,w))

Convert to Thz

syms fThz

X(fThz) = X(2*sym(pi)*(fThz*1e12))

The plot doesn't look like yours, actually it looks like one cycle of yours. However, I also don't see how the the plots you've posted for X(f) match the equation you've posted for X(f)

xfunc = matlabFunction(X(fThz)/T);

figure

plot(-0.01:.00001:0.01,abs(xfunc(-0.01:.00001:0.01)))

### More Answers (1)

Walter Roberson
on 8 Dec 2022

##### 5 Comments

Walter Roberson
on 9 Dec 2022

Edited: Walter Roberson
on 9 Dec 2022

syms t f

T = sym(5.0)*10^(-10);

roll = sym(0.3);%roll-off β

A = sym(pi)*t/T;

x(t)= sin(A)/A*cos(roll*A)/(1-(2*roll*t/T)^2);

y(f)=fourier(x(t))

char(x)

Notice that the result has unevaluated calls to fourier(). That means that fourier() was unable to compute the fourier transform of that function.

I checked on Wolfram Alpha, which was able to come up with a transformation... but MATLAB is not able to do so.

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!