在Matlab中从两个不等数组中选择最高出价的更有效方法?

M.S*_*S.E 0 matlab

我得到以下问题:

编写一个迭代两个向量A和B的脚本,其中包含商品销售的出价.它计算出每个元素出价最高的新向量C.

例如-A = [1 2 4 6]且B = [5 0 8 10]应产生C = [5 2 8 10]

我研究了这个并找到了解决这个问题的两种方法(两个解决方案):

解决方案1

C=zeros(length(A))

For i=1:length(A);

 If A(i)=>B(i)

    C(i)=A(i);

    Else

    C(i)=B(i);

 End

End

disp(C);
Run Code Online (Sandbox Code Playgroud)

解决方案2(更智能的解决方案)

C=A

For i=1:length(A)

 If B(i)>A(i)

 C(i)=B(i);

 End

End

disp(C);
Run Code Online (Sandbox Code Playgroud)

然后我想如果A和B的长度不相等怎么办?

例如 - 如果A = [1 2 3 4]且B = [4 3 2 4 0 6]则产生C = [4 3 3 4 0 6]

我想到了这个,我能想到的解决方案是:

If length(A)>length(B)

 m=length(A);

 C=A;

Else

 m=length(B);

 C=B;

End

For i=1:m

 If A(i)=>B(i)

    C(i)=A(i);

    Else

    C(i)=B(i);

 End

End

disp(C);
Run Code Online (Sandbox Code Playgroud)

我不是百分百确定上述代码是否完美,我很乐意找到新的和其他有效的方法来解决这个问题,请分享,如果你知道一个更好的方法

Rat*_*ert 5

你可以简单地做:

C = max([A ; B]);
Run Code Online (Sandbox Code Playgroud)

如果你的矢量可以有不同的长度,那么你可以填充最小的-Inf元素:

C = max([A -Inf(1,numel(B)-numel(A)) ; B -Inf(1,numel(A)-numel(B))]);
Run Code Online (Sandbox Code Playgroud)

最好,