手机型号,不知道会不会被拒。先记下来

本文介绍如何通过Objective-C代码获取iOS设备的型号和版本信息,包括从系统调用中解析硬件信息,并针对不同型号返回相应的设备名称。




+ (NSString *)getCurrentDeviceModel:(UIViewController *)controller
{
    int mib[2];
    size_t len;
    char *machine;
     
    mib[0] = CTL_HW;
    mib[1] = HW_MACHINE;
    sysctl(mib, 2, NULL, &len, NULL, 0);
    machine = malloc(len);
    sysctl(mib, 2, machine, &len, NULL, 0);
     
    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
    free(machine);
     
    if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G (A1203)";
    if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G (A1241/A1324)";
    if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS (A1303/A1325)";
    if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4 (A1332)";
    if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (A1332)";
    if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (A1349)";
    if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S (A1387/A1431)";
    if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (A1428)";
    if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (A1429/A1442)";
    if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (A1456/A1532)";
    if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (A1507/A1516/A1526/A1529)";
    if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (A1453/A1533)";
    if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (A1457/A1518/A1528/A1530)";
    if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus (A1522/A1524)";
    if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 (A1549/A1586)";
     
    if ([platform isEqualToString:@"iPod1,1"])   return @"iPod Touch 1G (A1213)";
    if ([platform isEqualToString:@"iPod2,1"])   return @"iPod Touch 2G (A1288)";
    if ([platform isEqualToString:@"iPod3,1"])   return @"iPod Touch 3G (A1318)";
    if ([platform isEqualToString:@"iPod4,1"])   return @"iPod Touch 4G (A1367)";
    if ([platform isEqualToString:@"iPod5,1"])   return @"iPod Touch 5G (A1421/A1509)";
     
    if ([platform isEqualToString:@"iPad1,1"])   return @"iPad 1G (A1219/A1337)";
     
    if ([platform isEqualToString:@"iPad2,1"])   return @"iPad 2 (A1395)";
    if ([platform isEqualToString:@"iPad2,2"])   return @"iPad 2 (A1396)";
    if ([platform isEqualToString:@"iPad2,3"])   return @"iPad 2 (A1397)";
    if ([platform isEqualToString:@"iPad2,4"])   return @"iPad 2 (A1395+New Chip)";
    if ([platform isEqualToString:@"iPad2,5"])   return @"iPad Mini 1G (A1432)";
    if ([platform isEqualToString:@"iPad2,6"])   return @"iPad Mini 1G (A1454)";
    if ([platform isEqualToString:@"iPad2,7"])   return @"iPad Mini 1G (A1455)";
     
    if ([platform isEqualToString:@"iPad3,1"])   return @"iPad 3 (A1416)";
    if ([platform isEqualToString:@"iPad3,2"])   return @"iPad 3 (A1403)";
    if ([platform isEqualToString:@"iPad3,3"])   return @"iPad 3 (A1430)";
    if ([platform isEqualToString:@"iPad3,4"])   return @"iPad 4 (A1458)";
    if ([platform isEqualToString:@"iPad3,5"])   return @"iPad 4 (A1459)";
    if ([platform isEqualToString:@"iPad3,6"])   return @"iPad 4 (A1460)";
     
    if ([platform isEqualToString:@"iPad4,1"])   return @"iPad Air (A1474)";
    if ([platform isEqualToString:@"iPad4,2"])   return @"iPad Air (A1475)";
    if ([platform isEqualToString:@"iPad4,3"])   return @"iPad Air (A1476)";
    if ([platform isEqualToString:@"iPad4,4"])   return @"iPad Mini 2G (A1489)";
    if ([platform isEqualToString:@"iPad4,5"])   return @"iPad Mini 2G (A1490)";
    if ([platform isEqualToString:@"iPad4,6"])   return @"iPad Mini 2G (A1491)";
     
    if ([platform isEqualToString:@"i386"])      return @"iPhone Simulator";
    if ([platform isEqualToString:@"x86_64"])    return @"iPhone Simulator";
    return platform;
}






#include <sys/types.h>

#include <sys/sysctl.h>


//可通过苹果review
- (NSString*)getDeviceVersion
{
    size_t size;
    sysctlbyname("hw.machine"NULL, &size, NULL, 0);
    char *machine = (char*)malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];

    //NSString *platform = [NSStringstringWithUTF8String:machine];二者等效

    free(machine);
    return platform;
}
 

- (NSString *) platformString{

    NSString *platform = [selfgetDeviceVersion];

    if ([platform isEqualToString:@"iPhone1,1"])   return@"iPhone 1G";

    if ([platform isEqualToString:@"iPhone1,2"])   return@"iPhone 3G";

    if ([platform isEqualToString:@"iPhone2,1"])   return@"iPhone 3GS";

    if ([platform isEqualToString:@"iPhone3,1"])   return@"iPhone 4";

    if ([platformisEqualToString:@"iPhone3,2"])   return @"Verizon iPhone 4";

    if ([platform isEqualToString:@"iPod1,1"])     return@"iPod Touch 1G";

    if ([platform isEqualToString:@"iPod2,1"])     return@"iPod Touch 2G";

    if ([platform isEqualToString:@"iPod3,1"])     return@"iPod Touch 3G";

    if ([platform isEqualToString:@"iPod4,1"])     return@"iPod Touch 4G";

    if ([platform isEqualToString:@"iPad1,1"])     return@"iPad";

    if ([platform isEqualToString:@"iPad2,1"])     return@"iPad 2 (WiFi)";

    if ([platform isEqualToString:@"iPad2,2"])     return@"iPad 2 (GSM)";

    if ([platform isEqualToString:@"iPad2,3"])     return@"iPad 2 (CDMA)";

    if ([platform isEqualToString:@"i386"])        return@"Simulator";


    return platform;

}


内容概要:本文围绕基于模型预测控制(MPC)与滚动时域估计(MHE)集成的目标点镇定展开研究,重点探讨了在动态系统中如何通过MPC实现精确控制,同时利用MHE进行状态估计以提升系统鲁棒性和精度。文中结合Matlab代码实现,展示了MPC与MHE协同工作的算法流程、数学建模过程及仿真验证,尤其适用于存在噪声或部分可观测的复杂系统环境。该方法能够有效处理约束条件下的最优控制问题,并实时修正状态估计偏差,从而实现对目标点的稳定镇定。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校研究生、基于模型预测控制(MPC)与滚动时域估计(MHE)集成的目标点镇定研究(Matlab代码实现)科研人员及从事控制系统开发的工程技术人员;熟悉状态估计与最优控制相关概念的研究者更为适宜; 使用场景及目标:①应用于机器人控制、航空航天、智能制造等需要高精度状态估计与反馈控制的领域;②用于深入理解MPC与MHE的耦合机制及其在实际系统中的实现方式,提升对预测控制与状态估计算法的综合设计能力; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,重点关注MPC代价函数构建、约束处理、滚动优化过程以及MHE的滑动窗口估计机制,同时参考文中可能涉及的卡尔曼滤波、最小均方误差等辅助方法,系统掌握集成架构的设计思路与调参技巧。
内容概要:本文详细介绍了一个基于遗传算法(GA)优化支持向量回归(SVR)的电力负荷预测项目,利用MATLAB实现从数据接入、特征工程、模型训练到评估部署的全流程。项目通过GA对SVR的关键超参数(如惩罚系数C、损失敏感带ε、核宽度σ)进行全局寻优,并结合多源数据(历史负荷、气象、节假日等)构建高精度预测模型。针对电力负荷的非平稳性、多尺度季节性和突发事件干扰等问题,提出了包括差分稳定化、周期性特征嵌入、K折交叉验证和集成增强在内的综合解决方案,提升了模型在短期与中期预测中的准确性与鲁棒性。同时,项目强调可解释性与工程化能力,提供特征重要度分析、SHAP值解释及REST接口部署方案,支持实际业务应用。; 适合人群:具备一定机器学习基础和MATLAB编程经验,从事电力系统分析、能源预测或智能电网相关工作的研究人员、工程师及高校师生。; 使用场景及目标:①应用于电力系统的短期(小时级)和中期(日到月级)负荷预测,支撑调度决策、需求响应、新能源并网与市场交易;②研究GA在复杂模型超参数优化与特征选择中的实际效果;③构建可解释、可审计、可部署的工业级预测系统原型。; 阅读建议:建议结合文中提供的MATLAB代码示例逐步实现各模块功能,重点关注GA编码策略、适应度函数设计与特征重要性评估方法,并尝试在真实数据上复现实验流程以加深理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值