匹配 MATLAB 中两个不相等数组的长度?
Match length of two unequal arrays in MATLAB?
假设我有 3 个不同长度的数组:
A[1 2 3 4 5 6]; B[1 2 4], C[0 1 5 6]
三个数组的最大长度为6。
所以我希望 B 和 C 也有 6 个元素。此外,新数组的最后一个“填充”元素应该是原始数组的最后一个元素
最后,新的B应该是[1 2 4 4 4 4],C应该是[0 1 5 6 6 6],我该如何实现呢?
非常感谢!
您可以使用 MATLAB 的索引运算符执行此操作。如果您对数组 end
之后的元素赋值,MATLAB 将使数组增长。对于向量(如本例),您只需要指定一个下标,因为扩展数组的方向没有歧义。
我会这样做 - 这并不假设您预先知道哪个数组是最大的。我正在使用 numel
来计算每个向量中的元素数。我还依赖于这样一个事实,即对于其中一个数组,end+1:maxLen
是一个空范围,因此在这种情况下不会进行任何修改。
maxLen = max([numel(A), numel(B), numel(C)]);
A(end+1:maxLen) = A(end)
B(end+1:maxLen) = B(end)
C(end+1:maxLen) = C(end)
假设我有 3 个不同长度的数组: A[1 2 3 4 5 6]; B[1 2 4], C[0 1 5 6]
三个数组的最大长度为6。 所以我希望 B 和 C 也有 6 个元素。此外,新数组的最后一个“填充”元素应该是原始数组的最后一个元素
最后,新的B应该是[1 2 4 4 4 4],C应该是[0 1 5 6 6 6],我该如何实现呢? 非常感谢!
您可以使用 MATLAB 的索引运算符执行此操作。如果您对数组 end
之后的元素赋值,MATLAB 将使数组增长。对于向量(如本例),您只需要指定一个下标,因为扩展数组的方向没有歧义。
我会这样做 - 这并不假设您预先知道哪个数组是最大的。我正在使用 numel
来计算每个向量中的元素数。我还依赖于这样一个事实,即对于其中一个数组,end+1:maxLen
是一个空范围,因此在这种情况下不会进行任何修改。
maxLen = max([numel(A), numel(B), numel(C)]);
A(end+1:maxLen) = A(end)
B(end+1:maxLen) = B(end)
C(end+1:maxLen) = C(end)