matlab - MATLAB 中的矩阵索引错误

标签 matlab matrix

我在 Matlab 中不断收到此错误:

Attempted to access r(0,0); index must be a positive integer or logical.

Error in ==> Romberg at 15

我用Romberg(1.3, 2.19,8)运行它

我认为问题是这个陈述不合逻辑,因为我把它定为肯定的,但仍然得到同样的错误。有人知道我能做什么吗?

function Romberg(a, b, n)
    h = b - a;
    r = zeros(n,n);
    for i = 1:n
        h = h/2;
        sum1 = 0;

        for k = 1:2:2^(i)
            sum1 = sum1 + f(a + k*h);
        end

        r(i,0) = (1/2)*r(i-1,0) + (sum1)*h;

        for j = 1:i
            r(i,j) = r(i,j-1) + (r(i,j-1) - r(i-1,j-1))/((4^j) - 1);
        end
    end
    disp(r);
end

function f_of_x = f(x)
    f_of_x = sin(x)/x;
end

最佳答案

有两行您使用 0 进行索引,这在 Matlab 中不能:

r(i,0) = (1/2)*r(i-1,0) + (sum1)*h;

r(i,j) = r(i,j-1) + (r(i,j-1) - r(i-1,j-1))/((4^j) - 1);

当 j==1 或 i==1 时。

我建议您从 2 开始运行循环,并分别用 (i-1) 和 (j-1) 替换指数 i 和 j。

顺便说一句:你可以编写循环

for k = 1:2:2^(i)

   sum1 = sum1 + f(a + k*h);

end

作为

k = 1:2:2^i;
tmp = f(a + k*h);
sum1 = sum(tmp);

如果你把 f_of_x 写成

sin(x)./x

关于matlab - MATLAB 中的矩阵索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497241/

相关文章:

matlab - 多项式系数的高效 Matlab 实现

matlab - 有没有办法获取在 Matlab 中运行的本地函数的名称?

windows - 有没有办法更改 MATLAB 命令行窗口的标题?

matrix - TI-Nspire:将参数传输到 Func/Prog

java - 如何获取Java堆的内存地址?

matlab - RANSAC 多元回归

c++ - 如何计算 OpenCV 中矩阵的直方图?

Jenkins 矩阵作业 : how to execute a step only when all the matrix is successful

r - 如何将GPU(gpuR)矩阵转换为标准R矩阵?

Python 相当于 matlab corr2