2

我正在尝试找到一种使两个列表长度相同的方法。如何将零添加到一个列表以使其与第一个列表具有相同的长度?

即list1=[1 2 3 4 5];list2=[ 1 2 3]

4

3 回答 3

3

有很多方法可以做到这一点。其中之一是

list3 = zeros(size(list1)); %# create an array of the same shape as list1
list3(1:numel(list2)) = list2(:); %# fill in the elements defined in list2

另一种方法是

list3 = [list2, zeros(1,length(list1)-length(list2))];

这两种方式都假设list2比 短list1

于 2011-04-17T22:55:06.540 回答
2

这是您知道 list2 比 list1 短的情况的单行代码

list2(numel(list1)) = 0;
于 2011-04-19T02:05:11.530 回答
1

假设您不知道这两个列表中哪个更大。您可以执行以下操作:

dif = size(l2)-size(l1);

if dif(2) < 0
    l2 = [l2, zeros(1, -dif(2))];
else
    l1 = [l1, zeros(1, dif(2))];
end

(这适用于八度音阶)

l1 = list1
l2 = list2
于 2011-04-17T23:05:44.717 回答