Matlab中的简单函数执行时间超过30秒

Matlab中的简单函数执行时间超过30秒,matlab,Matlab,为什么这个名为test的简单函数在Matlab中执行时间超过30秒 这是为给定向量a、b和c创建三对角矩阵的简单代码。但是函数测试中的循环将永远持续。每次我运行这个文件都需要30秒来执行,这正常吗 m=100000; a = [0,5*ones(1,m-1)]; b = 10*ones(1,m); c = 2*ones(1,m-1); d = 10*rand(m,1); A=test(a,b,c); function A = test(a,b,c) n= length(b); A = sp

为什么这个名为test的简单函数在Matlab中执行时间超过30秒

这是为给定向量a、bc创建三对角矩阵的简单代码。但是函数测试中的循环将永远持续。每次我运行这个文件都需要30秒来执行,这正常吗

m=100000;

a = [0,5*ones(1,m-1)];
b = 10*ones(1,m);
c = 2*ones(1,m-1);
d = 10*rand(m,1);

A=test(a,b,c);

function A = test(a,b,c)
n= length(b);
A = sparse(n,n);

for i=1:n-1
    A(i,i)=b(i);
    A(i+1,i)=a(i+1);
    A(i,i+1)=c(i);
end

A(n,n)=b(n);

end

在每次循环迭代中,您都要重新分配稀疏矩阵数据结构。请尝试使用此语法进行
sparse
:最好跳过循环并使用。尝试使用“运行和时间”按钮而不是“运行”按钮。这可能需要更长的时间,因为Matlab正在执行额外的过程,但是当它完成时,它会告诉您哪些行花费的时间最长。