为什么我会得到;输出参数的数目错误“;从Matlab转换到Scilab时出错?

为什么我会得到;输出参数的数目错误“;从Matlab转换到Scilab时出错?,matlab,scilab,Matlab,Scilab,我试图将这个Matlab代码转换为Scilab,但我有一些问题 N = 101; L = 4*pi; x = linspace(0,L,N); % It has three data set; 1: past, 2: current, 3: future. u = zeros(N,3); s = 0.5; % Gaussian Pulse y = 2*exp(-(x-L/2).^2); u(:,1) = y; u(:,2) = y; % Plot the initial condition. h

我试图将这个Matlab代码转换为Scilab,但我有一些问题

N = 101;
L = 4*pi;
x = linspace(0,L,N);
% It has three data set; 1: past, 2: current, 3: future.
u = zeros(N,3);
s = 0.5;
% Gaussian Pulse
y = 2*exp(-(x-L/2).^2);
u(:,1) = y;
u(:,2) = y;
% Plot the initial condition.
handle_line = plot(x,u(:,2),'LineWidth',2);
axis([0,L,-2,2]);
xlabel('x'); ylabel('u');
title('Wave equation');
% Dirichet Boundary conditions
u(1,:) = 0;
u(end,:) = 0;
filename = 'wave.gif';
for ii=1:100
    disp(['at ii= ', num2str(ii)]);
    u(2:end-1,3) = s*(u(3:end,2)+u(1:end-2,2)) ...
        + 2*(1-s)*u(2:end-1,2) ...
        - u(2:end-1,1);
    u(:,1) = u(:,2);
    u(:,2) = u(:,3);
    handle_line.YData = u(:,2);
    drawnow;
    frame = getframe(gcf);
    im = frame2im(frame);
    [A,map] = rgb2ind(im,256);
    if ii==1
           imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',0.05);
    else
        imwrite(A,map,filename,'gif','WriteMode','append','DelayTime',0.05);
    end
end
我得到一个关于这行的错误:

handle_line = plot(x,u(:,2),'LineWidth',2);
错误状态:输出参数的数目错误

我应该改变什么来修复它?

试试这个:

N = 101;
L = 4*pi;
x = linspace(0,L,N);
% It has three data set; 1: past, 2: current, 3: future.
u = zeros(N,3);
s = 0.5;
% Gaussian Pulse
y = 2*exp(-(x-L/2).^2);
u(:,1) = y;
u(:,2) = y;
% Define a standard plot range for x and y
x_range=[min(x) max(x)];
y_range=[-max(y) max(y)];
% Plot the initial condition.
plot(x,u(:,2),'LineWidth',2);
axis([0,L,-2,2]);
xlabel('x'); ylabel('u');
title('Wave equation');
% Dirichet Boundary conditions
u(1,:) = 0;
u(end,:) = 0;
filename = 'wave.gif';
for ii=1:100
    disp(['at ii= ', num2str(ii)]);
    u(2:end-1,3) = s*(u(3:end,2)+u(1:end-2,2)) ...
        + 2*(1-s)*u(2:end-1,2) ...
        - u(2:end-1,1);
    u(:,1) = u(:,2);
    u(:,2) = u(:,3);
    plot(x,u(:,2),'LineWidth',2);
    axis([x_range y_range]);
    frame = getframe(gcf);
    im = frame2im(frame);
    [A,map] = rgb2ind(im,256);
    if ii==1
           imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',0.05);
    else
        imwrite(A,map,filename,'gif','WriteMode','append','DelayTime',0.05);
    end
end
我删除了输出并独立添加了轴限制。

轴([0,L,-2,2]);
必须在Scilab中翻译为

set(gca(),"data_bounds",[0,L,-2,2]);

与MATLAB不同,在Scilab中,大多数图形命令不返回输出。创建图形对象后,需要使用函数检索句柄。一旦获得,您就可以按照上面链接示例中所示的方式操作它的属性,在您的例子中可能还有对象。我认为我的代码有一个小问题。试试这个。希望现在能有所帮助…谢谢。看来它解决了问题。但现在我得到一个错误:未定义变量:第16行中的axis。你知道我怎么解决这个问题吗?