M
和{{1}时,如何根据M=[a:(b-a)/5:b]
(从a
到b
分5步)定义矩阵a
是矢量或集合;更具体地说,b
中的每一行i
应该具有等于M
的第一个值和最后一个值a(i)
,并且在它们之间,等于5个步骤。
例如,如果我有
b(i)
我想生成
形式的矩阵a = [0; b = [10;
0]; 20];
M
我知道如何使用循环来做到这一点,但我正在寻找一个没有的解决方案。我怎么能这样做?
答案 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