已知有两个随机排序向量( 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无用
悬赏问题
- ¥15 cplex运行后参数报错是为什么
- ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
- ¥15 vue3获取动态宽度,刷新后动态宽度值为0
- ¥15 升腾威讯云桌面V2.0.0摄像头问题
- ¥15 关于Python的会计设计
- ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
- ¥15 stm32c8t6工程,使用hal库
- ¥15 找能接spark如图片的,可议价
- ¥15 关于#单片机#的问题,请各位专家解答!
- ¥15 博通raid 的写入速度很高也很低