已知有两个随机排序向量( A和B)。假设每个向量里面都是十五个元素, 数值为1到15
第一步:构造一个C向量:用A向量减去B向量中所有元素求绝对值。
第二步:找到C向量中最大的元素。如果只有一个最大元素,则将A,B向量中与C向量中相同位置的元素移除, 得到A_1 和 B_1
如果有两个以上最大元素,则比较与C中最大元素位置相同的A向量和B向量对应元素,将A,B向量中含有最大值的那一组元素移除,得到A_1 和 B_1
第三步:将一二步骤进行循环,直到A, B 向量中各自剩下一个元素。
第四步:依次标记被移除元素在C中的位置。构造新的向量。
求一个Matlab程序代码,实现以下循环过程。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- CSDN专家-Matlab_Fans 2021-11-15 23:16关注
clear clc A = randperm(15); B = randperm(15); A_1 = A; B_1 = B; ii = 1; while length(A_1) > 1 %% 做差 C = abs(A_1-B_1); ind = find( C == max(C)) ; %% 找出下标 [~,ind2] = max(A_1(ind)); [~,ind3] = max(B_1(ind)); if A( ind(ind2) ) >= B( ind(ind3) ) ind = ind(ind2); else ind = ind(ind3); end %% 保存位置 D(ii) = ind; % 每次移除数据在A中的下标 DA(ii) = A_1(ind); % A中移除数据 DB(ii) = B_1(ind); % B中移除数据 DC(ii) = C(ind); % B中移除数据 ii = ii+1; %% 移除操作 A_1 = [A_1(1:ind-1) A_1(ind+1:end)]; B_1 = [B_1(1:ind-1) B_1(ind+1:end)]; end D DA DB DC
结果:
被移除元素在C中的位置 D = 7 9 2 11 6 1 6 5 4 6 5 3 2 1 被移除A中元素 DA = 13 12 4 3 2 10 15 1 11 8 9 7 6 5 被移除B中元素 DB = 1 2 13 11 10 3 9 7 15 4 12 8 5 6 被移除C中元素 DC = 12 10 9 8 8 7 6 6 4 4 3 1 1 1
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 3无用
悬赏问题
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
- ¥15 求daily translation(DT)偏差订正方法的代码
- ¥15 js调用html页面需要隐藏某个按钮