gpt4 book ai didi

matlab - 向量化冒号的概念(:) - values between two vectors in MATLAB

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:11 25 4
gpt4 key购买 nike

我有两个向量,idx1idx2,我想获取它们之间的值。如果 idx1idx2 是数字而不是向量,我可以通过以下方式做到这一点:

idx1=1;
idx2=5;
values=idx1:idx2

% Result
% values =
%
% 1 2 3 4 5

但在我的例子中,idx1idx2 是可变长度的向量。例如,对于长度=2:

idx1=[5,9];
idx2=[9 11];

我可以使用冒号运算符直接获取中间的值吗?这是类似于以下内容的内容:

values = [5     6     7     8     9     9    10    11]

我知道我可以做 idx1(1):idx2(1)idx1(2):idx2(2),这是为每个提取值列分开,所以如果没有其他解决方案,我可以用 for 循环来做,但也许 Matlab 可以更容易地做到这一点。

最佳答案

您的示例输出不合法。矩阵不能有不同长度的行。您可以使用 arrayfun 创建元胞数组:

values = arrayfun(@colon, idx1, idx2, 'Uniform', false)

要将生成的元胞数组转换为向量,您可以使用 cell2mat :

values = cell2mat(values);

或者,如果生成的元胞数组中的所有向量都具有相同的长度,您可以按如下方式构建输出矩阵:

values = vertcat(values{:});

关于matlab - 向量化冒号的概念(:) - values between two vectors in MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14341798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com