TMC13 配置文件generate

本文详细介绍了在Windows环境下使用git和strawberryperl批量生成TMC13V4.0配置文件的过程,包括环境搭建、模块补充及shell脚本运行等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

怕自己后面忘记了,所以做个记录,也方便有需要的同学少走弯路。

首先感谢ZF师弟远程指导,要不鬼知道我多久能搞定。

目标:TMC13V4.0配置文件生成

配置文件以yaml格式给出,利用shell+perl批量生成, 友好性稍微有些差,走了不少弯路做个记录。

环境Windows 7 + git 2.20.1 + strawberry perl 5.28.1.1

首先需要一个可以执行shell的环境,在网上做了搜索,发现利用git提供的环境比较无脑一些,食用之

git自身的perl缺少一些module,粗暴解决办法把strawberry perl下面的对应的.pm文件进行拷贝,拷贝至git安装目录下面的./usr/share/perl5/core_perl/目录下面。其中list-moreutils还需要自行下载一下。

全部拷贝完成后,在git bash下进入到cfg的目录,../scripts/gen-cfg.sh --all 就可以生成配置文件了。

 

 

 

%% Q1_analysis_final_fixed.m % 问题一:完整增强版 + 警告处理(修正版,无 ternary) clear; clc; close all; %% 1. 加载与预处理 data = readtable('附件3-公交车到站延误时间统计.csv'); data.weather = categorical(data.weather, {'sunny','rainy'}); data.period = categorical(data.period, {'off-peak','peak'}); % IQR 异常值剔除 d = data.delay_time; Q = quantile(d, [0.25, 0.75]); IQR = Q(2)-Q(1); mask = d >= (Q(1)-1.5*IQR) & d <= (Q(2)+1.5*IQR); data = data(mask, :); % 分组统计 [G, W, P] = findgroups(data.weather, data.period); gm = splitapply(@mean, data.delay_time, G); gs = splitapply(@std, data.delay_time, G); gn = splitapply(@numel, data.delay_time, G); Tstats = table(W, P, gm, gs, gn, 'VariableNames',{'Weather','Period','Mean','Std','Count'}); disp('=== 分组统计 ==='); disp(Tstats); %% 2. 可视化 labels = strcat(string(W), '-', string(P)); figure('Name','箱线图'); boxplot(data.delay_time, G, 'Labels',labels); title('不同天气-时段组合延误分布(箱线图)'); ylabel('延误时间 (分钟)'); saveas(gcf,'Q1_boxplot.png'); figure('Name','核密度估计'); hold on; cols = lines(max(G)); for k=1:max(G) [f,xi] = ksdensity(data.delay_time(G==k)); plot(xi,f,'Color',cols(k,:),'LineWidth',1.5); end legend(labels,'Location','best'); title('不同组合延误时间核密度估计'); xlabel('延误时间 (分钟)'); ylabel('密度'); saveas(gcf,'Q1_kde.png'); hold off; %% 3. 正态性检验(彻底去除 Lilliefors 低 p 值警告) % 保存当前所有警告状态 warnStateAll = warning; % 关闭仅与 lillietest 相关的警告 warning('off','stats:lillietest:LowPValue'); % 计算残差 residuals = data.delay_time - gm(G); % 执行检验 [hN, pN] = lillietest(residuals); % 恢复之前的所有警告设置 warning(warnStateAll); % 输出结果 if hN normMsg = '拒绝残差正态性'; else normMsg = '未拒绝残差正态性'; end fprintf('Lilliefors 正态性检验:p = %.4f,%s\n', pN, normMsg); % Q–Q 图 figure('Name','残差 Q–Q 图'); qqplot(residuals); title('残差 Q–Q 图'); saveas(gcf,'Q1_qqplot.png'); %% 4. 方差齐性检验 pL = vartestn(data.delay_time, G, 'TestType','LeveneAbsolute','Display','off'); fprintf('Levene 方差齐性检验:p = %.4f\n', pL); % 若方差不齐,进行 log 变换 if pL < 0.05 fprintf('方差不齐,进行 log 变换后重做 ANOVA\n'); data.delay_time = log(data.delay_time - min(data.delay_time) + 1); % 重新分组统计残差等需重新计算:这里只直接跑 ANOVA [pA, tblA, statsA] = anovan(data.delay_time, ... {data.weather, data.period}, ... 'model','interaction','varnames',{'Weather','Period'}, ... 'display','off'); labelStr = 'Log 变换后'; else [pA, tblA, statsA] = anovan(data.delay_time, ... {data.weather, data.period}, ... 'model','interaction','varnames',{'Weather','Period'}, ... 'display','off'); labelStr = '原始数据'; end %% 5. 双因素 ANOVA & 贡献率 SS = cell2mat(tblA(2:4,2)); SSE = tblA{5,2}; SST = sum(SS) + SSE; contri = SS ./ SST * 100; fprintf('\n=== ANOVA 结果(%s)===\n', labelStr); fprintf(' 天气主效应: F=%.2f, p=%.4f, 贡献率=%.2f%%\n', ... tblA{2,6}, tblA{2,7}, contri(1)); fprintf(' 时段主效应: F=%.2f, p=%.4f, 贡献率=%.2f%%\n', ... tblA{3,6}, tblA{3,7}, contri(2)); fprintf(' 交互作用效应: F=%.2f, p=%.4f, 贡献率=%.2f%%\n', ... tblA{4,6}, tblA{4,7}, contri(3)); %% 6. 事后多重比较 [c,~,~,gnames] = multcompare(statsA, 'Dimension',[1 2], 'Display','off'); Tmc = array2table(c, 'VariableNames',{'Group1','Group2','Lower','Estimate','Upper','pValue'}); Tmc.Group1 = gnames(c(:,1)); Tmc.Group2 = gnames(c(:,2)); disp('=== 交互作用事后比较 ==='); disp(Tmc);
05-13
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值