利用矩阵输入matlab实现Linspace
我的问题似乎有些奇怪,因为我知道在利用矩阵输入matlab实现Linspace,matlab,Matlab,我的问题似乎有些奇怪,因为我知道在linspace(x1,x2,n)函数中不能使用矩阵作为输入。但我的问题更像是:我有一个向量a=linspace(0,Amax,N),我想建立一系列向量B_k或大矩阵B_k=linspace(0,a(k),N),但不做for循环,这会减慢我的整个计算 % already defined A rGC=linspace(0,75e-7,N); for k=1:N r=rGC(k); v=linspace(0,A*r,N); y=f(r,v);
linspace(x1,x2,n)
函数中不能使用矩阵作为输入。但我的问题更像是:我有一个向量a=linspace(0,Amax,N)
,我想建立一系列向量B_k或大矩阵B_k=linspace(0,a(k),N)
,但不做for
循环,这会减慢我的整个计算
% already defined A
rGC=linspace(0,75e-7,N);
for k=1:N
r=rGC(k);
v=linspace(0,A*r,N);
y=f(r,v);
INT=trapz(v,y);
% The same for 8 more integrals
end
可能是使用interp1进行插值,例如:
[0 0 0 ... 0 ]
[A(1) A(2) A(3) ... A(N)]
有N行。。。。例如:
N = 5;
Amax = 15;
A = linspace(0, Amax, N);
x = [0 1];
y = zeros(2, N);
y(2, :) = A;
B = interp1(x, y, linspace(0, 1, N))
这将提供:
B =
0 0 0 0 0
0 0.9375 1.8750 2.8125 3.7500
0 1.8750 3.7500 5.6250 7.5000
0 2.8125 5.6250 8.4375 11.2500
0 3.7500 7.5000 11.2500 15.0000
不确定它是否会比
for
循环快,或者甚至不知道这里的要点:)for循环不会减慢您的计算速度。是否可以包含使用for循环所需的代码?它是数值计算二重积分。@AnderBiguri假设OP使用的是Matlab 2015b或更高版本,否则就要失败了slower@SembeiNorimaki如果存在矢量化解决方案,则速度可能较慢。