我有两个数组
A=[1;2]
B= [5;6]
现在我希望矩阵C = A:B这样
C = [1 2 3 4 5; 2 3 4 5 6]
我怎样才能在matlab中做到这一点?
答案 0 :(得分:1)
您可以使用arrayfun
结合cell2mat
这样执行此操作:
A =
1 4 7 10
B =
5 8 11 14
cell2mat(arrayfun(@(n) (A(n):B(n)), 1:numel(A),'UniformOutput', false)')
ans =
1 2 3 4 5
4 5 6 7 8
7 8 9 10 11
10 11 12 13 14
您可以使用UniformOutput
的缩写将其缩短一点,但我建议将其写出来,因为缩写在将来的MATLAB版本中可能不再明确。请查看this question,以便对该主题进行冗长的讨论。
答案 1 :(得分:1)
您的问题隐含地假定B(1)-A(1)
等于B(2)-A(2)
等;否则结果是不确定的。
您可以按照以下方式非常有效地执行此操作:构建第一行,然后使用bsxfun
获取所有其他行:
C = bsxfun(@plus, A(1):B(1), A(:)-A(1));
答案 2 :(得分:0)
C = [A(1,1):B(1,1);A(2,1):B(2,1)];
答案 3 :(得分:0)
试一试:
C=[ A(1):1:B(1); A(2):1:B(2) ]