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方法快一个数量级。