python – 序列中相邻元素之间的比较

weixin_38058933 2019-09-12 12:19:26
我需要一个序列中元素之间的比较索引.该索引是序列中相邻元素之间所有绝对比较的总和与具有其长度的序列可具有的最高值之​​间的商. 例如,序列s1 = [0,1,2]和s2 = [0,2,1]分别具有绝对比较[1,1]和[2,1].没有长度为3的序列的其他组合,绝对比较和的值高于3.因此,对于s1和s2,比较指数应为2/3和3/3. 这些序列总是具有从0到长度为1的整数,并且可以具有非相邻的重复元素,例如[0,1,0,1,0].这些序列在其较低和最高元素值之间具有所有整数. 我需要一个函数来计算绝对比较的最高值和给定长度的序列可以有的.我写的函数(最高)返回错误的结果.我写了这段代码: def aux_pairs(seq): n = 2 return [seq[i:i + n] for i in range(len(seq) - (n - 1))] def comparisons_sum(seq): return sum([abs(el[-1] - el[0]) for el in aux_pairs(seq)]) def highest(seq): card = len(seq) pair = [0, card - 1] r = (pair * (card / 2)) if card & 1 == 1: r.append(0) return comparisons_sum(r) def comparison_index(seq): return comparisons_sum(seq) / float(highest(seq))
...全文
535 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38134555 2019-09-12
  • 打赏
  • 举报
回复
生成列表的最简单方法是: def comparisons(seq): return [abs(a-b) for a, b in zip(seq, seq[1:])] 至于你的比较,最高值总是最大值,然后是最小值,重复.例如:长度为4: [3, 0, 3, 0] 因为这将每次产生最大差异.对于比较字符串(长度为1),每个项目将存在这些最大差异之一(长度为1).因此最大值将是(长度-1)** 2. 但是,你似乎暗示长度3的最大值是3,那么为什么[0,2,0]无效(产生[2,2],总和为4)? 您提到必须包含从0到长度为1的所有整数,但这会使您的一些示例(例如:[0,1,0])无效.这也与任何元素都可以重复的想法相冲突(如果长度为n的列表必须包含0到n-1,则它不能重复). 如果这种情况属实,那么您的问题就会变得与创建抖动矩阵的问题类似. 在排序范围从0到len-1的情况下,为了产生最大差异,最佳算法是从0开始,从len-1开始,将低值加到列表的最高“侧”. ,反之亦然: from collections import deque from itertools import permutations from operator import itemgetter def comparisons(seq): return [abs(a-b) for a, b in zip(seq, seq[1:])] def best_order(n): temp = deque([0, n-1]) low = 1 high = n-2 while low < high: left = temp[0] right = temp[-1] if left < right: temp.append(low) temp.appendleft(high) else: temp.append(high) temp.appendleft(low) low += 1 high -= 1 if len(temp) < n: temp.append(low) return list(temp) def brute_force(n): getcomp = itemgetter(2) return max([(list(a), comparisons(a), sum(comparisons(a))) for a in permutations(range(n))], key=getcomp) for i in range(2, 6): print("Algorithmic:", best_order(i), comparisons(best_order(i)), sum(comparisons(best_order(i)))) print("Brute Force:", *brute_force(i)) 这给了我们: Algorithmic: [0, 1] [1] 1 Brute Force: [0, 1] [1] 1 Algorithmic: [0, 2, 1] [2, 1] 3 Brute Force: [0, 2, 1] [2, 1] 3 Algorithmic: [2, 0, 3, 1] [2, 3, 2] 7 Brute Force: [1, 3, 0, 2] [2, 3, 2] 7 Algorithmic: [3, 0, 4, 1, 2] [3, 4, 3, 1] 11 Brute Force: [1, 3, 0, 4, 2] [2, 3, 4, 2] 11 表明该算法与蛮力方法相匹配,可以产生最佳结果. 以下是一个更通用的解决方案: from collections import deque def comparisons(seq): return [abs(a-b) for a, b in zip(seq, seq[1:])] def best_order(seq): pool = deque(sorted(seq)) temp = deque([pool.popleft(), pool.pop()]) try: while pool: if temp[0] < temp[-1]: temp.append(pool.popleft()) temp.appendleft(pool.pop()) else: temp.append(pool.pop()) temp.appendleft(pool.popleft()) except IndexError: pass return list(temp) i = [0, 1, 2, 3, 4, 5, 6, 0, 0, 1, 1, 2, 2] print("Algorithmic:", best_order(i), comparisons(best_order(i)), sum(comparisons(best_order(i)))) for n in range(2, 6): i = list(range(n)) print("Algorithmic:", best_order(i), comparisons(best_order(i)), sum(comparisons(best_order(i)))) 这使: Algorithmic: [2, 1, 3, 0, 5, 0, 6, 0, 4, 1, 2, 1, 2] [1, 2, 3, 5, 5, 6, 6, 4, 3, 1, 1, 1] 38 Algorithmic: [0, 1] [1] 1 Algorithmic: [0, 2, 1] [2, 1] 3 Algorithmic: [2, 0, 3, 1] [2, 3, 2] 7 Algorithmic: [3, 0, 4, 1, 2] [3, 4, 3, 1] 11 这与之前的结果相符.
内容概要:本文围绕基于电感电容电流环PI与前馈补偿矩阵构造的跟网型储能变流器,开展dq坐标系下的阻抗理论建模与Simulink仿真对比研究。通过建立储能变流器在dq域的数学模型,设计包含电感电流内环、电容电流中间环和电压外环的多环控制结构,并引入前馈补偿矩阵以提升系统的动态响应能力和稳定性。在此基础上,采用小信号分析法推导系统的输出阻抗模型,构建完整的dq域阻抗理论框架,并利用Simulink平台搭建高保真仿真模型进行频域扫频验证,实现理论建模与仿真结果的精确对比,深入分析控制参数对系统阻抗特性的影响规律,揭示其在抑制并网系统振荡、提升稳定性方面的关键作用,为新能源并网系统的稳定性分析与优化设计提供坚实的理论支撑和技术路径。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、储能系统、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握跟网型储能变流器在dq域的阻抗建模方法;②理解多环控制与前馈补偿对系统阻抗特性的影响机制;③实现理论阻抗模型与Simulink仿真扫频结果的对比验证,支撑并网稳定性分析。; 阅读建议:学习者应结合控制理论与电力电子变换器知识,重点关注数学推导与仿真建模的一致性,建议动手复现Simulink仿真模型并进行参数敏感性分析,以深化对阻抗重塑机理的理解。
内容概要:本文介绍了基于Matlab实现的基本雷达与干扰机仿真系统,旨在通过代码实践帮助读者深入理解雷达系统的工作原理及其在复杂电磁环境中与干扰机的相互作用机制。内容涵盖雷达信号的发射、传播、目标回波接收、微多普勒效应建模、干扰信号的生成与影响分析等关键环节,结合具体的Matlab代码实现了完整的仿真流程,并提供了详尽的结果可视化与性能评估,重点展示了目标探测、时频特征提取、干扰抑制策略等关键技术的实现方法,有助于掌握雷达系统动态特性与抗干扰能力的分析手段。; 适合人群:具备一定Matlab编程基础,对雷达系统、信号处理、电子对抗或通信工程等领域感兴趣的高校学生、科研人员及工程技术人员。; 使用场景及目标:①学习雷达系统的基本构成与工作流程;②掌握雷达回波信号与典型干扰信号(如噪声干扰、欺骗干扰)的数学建模方法;③通过Matlab仿真深入理解微多普勒特征、时频分析技术(如STFT、小波变换)及干扰抑制算法;④为开展雷达目标识别、抗干扰算法设计或电子战系统仿真等前沿研究奠定实践基础。; 阅读建议:建议读者结合提供的Matlab代码逐段运行并调试,重点关注雷达信号模型、目标运动建模、干扰生成模块及信号处理流程,配合文中仿真结果进行对比分析;同时可延伸学习现代信号处理技术如压缩感知、机器学习在雷达中的应用,以提升综合科研与工程实践能力。
基于星形耦合自均流机制的双三相LLC变换器变频调压与多模式切换控制策略研究(Simulink仿真实现)内容概要:本文研究了一种基于星形耦合自均流机制的双三相LLC变换器,重点探讨其变频调压与多模式切换控制策略,并通过Simulink进行仿真实现。该研究旨在解决双三相LLC变换器在不同工作模式下电流不均衡、电压调节不稳定等问题,通过引入星形耦合结构实现自动均流,提升系统效率与可靠性。文中详细分析了变频控制对谐振变换器输出电压的调节机理,设计了多模式平滑切换策略以适应负载变化,确保系统在轻载、重载及瞬态工况下的高效稳定运行。同时,建立了完整的Simulink仿真模型,验证了所提控制策略在动态响应、稳态精度和抗干扰能力方面的优越性。; 适合人群:从事电力电子与电力传动、新能源变换技术及相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高效率、高可靠性的直流电源系统设计,如电动汽车充电、数据中心供电等;②为多相LLC谐振变换器的均流控制与模式切换提供理论支持和技术方案;③适用于需要高性能电源变换器的工业应用场景,推动先进控制策略在实际系统中的落地应用。; 阅读建议:读者应具备一定的电力电子电路与控制系统基础知识,建议结合Simulink仿真模型同步学习,深入理解控制逻辑的设计细节与参数整定方法,并可通过修改仿真参数验证不同工况下的系统性能,以增强实践理解和创新能力。

479

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧