两组之间的间距均匀(Vectorize LINSPACE) - MATLAB

时间:2015-03-13 14:00:15

标签: matlab matrix vector vectorization

M和{{1}时,如何根据M=[a:(b-a)/5:b](从ab分5步)定义矩阵a是矢量或集合;更具体地说,b中的每一行i应该具有等于M的第一个值和最后一个值a(i),并且在它们之间,等于5个步骤。

例如,如果我有

b(i)

我想生成

形式的矩阵a = [0; b = [10; 0]; 20];
M

我知道如何使用循环来做到这一点,但我正在寻找一个没有的解决方案。我怎么能这样做?

2 个答案:

答案 0 :(得分:7)

使用vectorized - {/ p>进行一次bsxfun方法

steps = 5                               %// number of steps
M = bsxfun(@plus,((b(:)-a(:))./(steps-1))*[0:steps-1],a(:))

示例运行 -

a =
     2
     3
b =
    18
    23
M =
     2     6    10    14    18
     3     8    13    18    23

答案 1 :(得分:1)

这是一种使用arrayfun的方法(比@Divakar的bsxfun解决方案慢),但仅仅是为了它:

clear
clc

a=[0;0];
b=[10;20];

%// Customize the stepsize
Step = 5;

M = cell2mat(arrayfun(@(a,b) (a:(b-a)/Step:b), a,b,'uni',false))

M =

     0     2     4     6     8    10
     0     4     8    12    16    20