使用矩阵输入matlab的Linspace

时间:2018-02-14 09:21:04

标签: 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);
    INT=trapz(v,y);
    %  The same for 8 more integrals
end

1 个答案:

答案 0 :(得分:3)

可能使用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循环更快,或者甚至在这里得到点:)