不知道为什么Matlab中出现了带索引的错误

时间:2013-06-12 12:56:47

标签: matlab

考虑以下matlab代码片段:

g = @(x, t)x.*0;
u_explizit = explizit_Euler(20, 800, 1, 1, zeros(21,1), g, [1;2], 0, 0.1);
figure
surf(u_explizit);
shading flat;
title('Aufgabe 2 - Explizit Euler');

u_implizit = implizit_Euler(20, 800, 1, 1, zeros(21,1), g, [1;2], 0, 0.1);

两个函数explizit_Eulerimplizit_Euler都以相同的命令开头(此处显示为explizit_Euler

function [u] = explizit_Euler(n, nt, T, kappa, u0, f, b, gN, gD)

tau = T/nt;

[A, z] = prepare_system(n, f, b, gN, gD);
z = z';
...
end

函数prepare_system如下所示:

function [ A, z] = prepare_system(n, f, b, gN, gD)
%PREPARE_MATRIX_SYSTEM Prepares A_h and solution vector f_h

    h = 1/n;
    z = f((0:n)./n);
...
end

来自prepare_system内的explizit_Euler来电正常。但是,implizit_Euler内的来电会发出错误消息,我无法弄清楚原因:

Subscript indices must either be real positive integers or logicals.
Error in implizit_Euler (line 5)
    z = f((0:n)./n);

似乎matlab认为f是一个向量,因此它无法访问f(0),如果f是一个向量,这是有意义的。但f是函数句柄!为什么完全相同的代码在explizit_Euler内的早期代码中正常工作?

1 个答案:

答案 0 :(得分:1)

我错放了implizit_Euler(!)签名中的参数 - 抱歉,伙计们!