Problem with ploting involving function handle

68 次查看(过去 30 天)
Hi all, I encounter the following error when I want to plot a function involving function handle with symsum, I cannot figure out the error. My code is as follows. In my matlab 2023b, I receive the following error:
Warning: Error updating FunctionLine.
The following error was reported evaluating the function in FunctionLine update: Undefined function 'symsum' for input arguments of type 'double'.
N= 600
N = 600
sym ii
COMx_k = @(k) symsum(1.*exp(-2*pi*1i*(k/N)*ii), ii,1,N)
COMx_k = function_handle with value:
@(k)symsum(1.*exp(-2*pi*1i*(k/N)*ii),ii,1,N)
%k=0:0.1:300
fplot(COMx_k)
xlabel('k')
ylabel('COMx_k')
Warning: Error in state of SceneNode.
The following error was reported evaluating the function in FunctionLine update: Unrecognized function or variable 'ii'.

采纳的回答

Matt J
Matt J 2024-10-13
编辑:Matt J 2024-10-15
Perhaps this is what you meant?
N= 600;
COMx_k = @(k) real(sum(1.*exp(-2*pi*1i*(k/N).*(1:N)' ),1));
%k=0:0.1:300
fplot(COMx_k,[0,300])
xlabel('k')
ylabel('COMx_k')
  6 个评论
Tsz Tsun
Tsz Tsun 2024-10-15
Yes, in fact I am trying to do a DFT. I just notice that there is a function package called fft(X) in matlab, but I am not sure if fft(X) is doing the job of DFT.
Walter Roberson
Walter Roberson 2024-10-15
fft() does a two-sided numeric discrete fourier transform.

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2024-10-13
sym ii
That is equivalent to
ans = sym('ii');
which creates the symbolic symbol ii but throws away the reference to the symbolic symbol.
What you probably wanted was
N= 600
syms ii
COMx_k = @(k) symsum(1.*exp(-2*pi*1i*(k/N)*ii), ii,1,N)
fplot(COMx_k)
xlabel('k')
ylabel('COMx_k')
However, this takes a fair amount of time to plot !!
  1 个评论
Walter Roberson
Walter Roberson 2024-10-13
@(k) symsum(1.*exp(-2*pi*1i*(k/N)*ii), ii,1,N)
That is complex-valued when k is not an integer, and is 0 when k is an integer.

请先登录,再进行评论。

产品


版本

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by