Matlab 定义多个值的范围

Matlab 定义多个值的范围,matlab,Matlab,我有两个数组 A=[1;2] B= [5;6] 现在我想让矩阵C=A:B这样 C = [1 2 3 4 5; 2 3 4 5 6] 如何在matlab中执行此操作?试试: C = [A(1,1):B(1,1);A(2,1):B(2,1)]; C=[ A(1):1:B(1); A(2):1:B(2) ] 您可以使用以下方式结合使用: A = 1 4 7 10 B = 5 8 11 14 cell2mat(arrayfu

我有两个数组

A=[1;2]

B= [5;6]
现在我想让矩阵C=A:B这样

C = [1 2 3 4 5; 2 3 4 5 6]
如何在matlab中执行此操作?

试试:

C = [A(1,1):B(1,1);A(2,1):B(2,1)];
C=[ A(1):1:B(1); A(2):1:B(2) ]
您可以使用以下方式结合使用:

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版本中,缩写可能不再是明确的。检查关于该主题的冗长讨论。

你的问题隐含地假设
B(1)-a(1)
等于
B(2)-a(2)
等;否则,结果是未定义的

您可以按如下方式非常普遍和高效地执行此操作:构建第一行,然后使用获取所有其他行:

C = bsxfun(@plus, A(1):B(1), A(:)-A(1));

我必须为数千人做这件事。所以这不是一个有效的方法,为什么你不把你的问题再扩展一点呢?显然这是最好的解决办法。我还没有进行基准测试(真的没有必要),但我认为这至少比arrayfun方法快一个数量级。