如何绘制几个变量的总和?

时间:2018-06-21 14:40:39

标签: matlab plot sum visualization symbolic-math

我正在尝试可视化方程a*sin(n*pi*x*t),其中:

  • a是一个常量
  • n是一种形状模式(1,2,...)
  • t是时间
  • x是位移

这是我的代码:

syms n t x

a=1

S=symsum(a*sin(n*pi*x*t),n,1,10)

plot(t,S)

我收到此错误:

Error using plot
A numeric or double convertible argument is expected

Error in Untitled (line 8)
plot(t,subs(S,x,t))

我该怎么办?

2 个答案:

答案 0 :(得分:3)

您不必为此使用符号变量,这是如何执行此操作的示例:

%% Definitions:
a = cat(3,1,-1,3);  % size(a) == [1,1,3]
n = cat(4,1,2,3,4); % size(a) == [1,1,1,4]
%% Grid for x,t
x_lims = [-2  2]; x_resolution = 50; X = linspace(x_lims(1),x_lims(2),x_resolution);
t_lims = [ 0 20]; t_resolution = 20; T = linspace(t_lims(1),t_lims(2),t_resolution);
[XX,TT] = meshgrid(X,T);
ZZ = a .* sin(pi * n .* XX .* TT); % size(ZZ) == [200,100,3,4]; Also, see note at the end
%% Plot
nA = numel(a); nN = numel(n);
figure(); subplot(nA, nN, 1);
for indA = 1:nA
  for indN = 1:nN
    subplot(nA, nN, (indA-1)*nN + indN);
    surf(XX,TT,ZZ(:,:,indA,indN),'EdgeColor','none');
    view([90,90]);
  end
end

哪种产量:

Example

在每个图中,t在水平轴上,x在垂直轴上,不同的a值是子图的行,不同的n值就是列。

请注意,我在代码中使用了隐式扩展;如果您使用的是旧版MATLAB,则必须使用bsxfun

答案 1 :(得分:1)

您可以使用plot来绘制符号变量。

此问题的一种简单解决方案是使用ezplot而不是plot