已知有两个随机排序向量( 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 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效
- ¥15 悬赏!微信开发者工具报错,求帮改
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持