我正在尝试可视化方程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))
我该怎么办?
答案 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
哪种产量:
在每个图中,t
在水平轴上,x
在垂直轴上,不同的a
值是子图的行,不同的n
值就是列。
请注意,我在代码中使用了隐式扩展;如果您使用的是旧版MATLAB,则必须使用bsxfun
。
答案 1 :(得分:1)
您可以使用plot
来绘制符号变量。
此问题的一种简单解决方案是使用ezplot
而不是plot
。