2020-12-31

jmeter学习遇到的小坑

1.明确测试计划是前端接口还是后端接口;后端不需要鉴权

2.明确接口路径及端口,不同引擎地址及端口不同

3.swagger api 默认值只是参考,实际参数填入参照项目来

4.http信息头管理器不要乱用,不需要的时候无需添加

5.善于利用chrome F12控制台,简单方便

这是一个典型的 **从多个文件中读取结构化文本数据**,然后 **按信号类型分类提取字段** 并 **计算平均值** 的问题。 --- ## ✅ 解决思路 1. **读取所有文件中的目标部分**(以 `#GNSxxx` 开头的表头和数据)。 2. **解析每行数据**,提取字段如 `CS_Total`, `CS_Slip` 等。 3. **按信号类型(如 `BDSL7I`)分类保存数据**。 4. **计算每类信号中各字段的平均值**。 --- ## ✅ 示例代码 ```matlab % 设置文件夹路径(假设所有文件都在同一个文件夹下) folderPath = 'your_folder_path_here'; % 替换为你的实际路径 fileList = dir(fullfile(folderPath, '*.txt')); % 假设是txt文件,也可以是其他扩展名 % 初始化存储结构 signalData = containers.Map('KeyType', 'char', 'ValueType', 'any'); % 遍历每个文件 for i = 1:length(fileList) fileName = fullfile(folderPath, fileList(i).name); fid = fopen(fileName, 'r'); if fid == -1 error('无法打开文件: %s', fileName); end line = fgetl(fid); while ischar(line) if startsWith(line, '#GNS') || startsWith(line, '=') % 匹配表头或数据行 if startsWith(line, '#') % 表头行 headerLine = line; header = strsplit(headerLine(6:end), ' '); % 提取字段名 else % 数据行 dataLine = line; data = strsplit(dataLine, ' '); signalType = data{1}(2:end); % 去掉前面的'=' % 提取字段数值 CS_Total = str2double(data{3}); CS_Slip = str2double(data{4}); CS_Epoch = str2double(data{5}); CS_Satell = str2double(data{6}); CS_Signal = str2double(data{7}); % 按信号类型保存数据 if ~isKey(signalData, signalType) signalData(signalType) = []; end signalData(signalType) = [signalData(signalType); ... {struct('CS_Total', CS_Total, ... 'CS_Slip', CS_Slip, ... 'CS_Epoch', CS_Epoch, ... 'CS_Satell', CS_Satell, ... 'CS_Signal', CS_Signal)}]; end end line = fgetl(fid); end fclose(fid); end % 计算每个信号类型的平均值 averageResults = containers.Map('KeyType', 'char', 'ValueType', 'any'); for signalType = keys(signalData)' signalType = signalType{1}; data = signalData(signalType); total = [data.CS_Total]; slip = [data.CS_Slip]; epoch = [data.CS_Epoch]; satell = [data.CS_Satell]; signal = [data.CS_Signal]; avg = struct(... 'CS_Total', mean(total), ... 'CS_Slip', mean(slip), ... 'CS_Epoch', mean(epoch), ... 'CS_Satell', mean(satell), ... 'CS_Signal', mean(signal)); averageResults(signalType) = avg; end % 显示某类信号的结果,比如 BDSL7I if isKey(averageResults, 'BDSL7I') disp('BDSL7I 的平均值:'); disp(averageResults('BDSL7I')); else disp('未找到 BDSL7I 类型的数据'); end ``` --- ## ✅ 输出示例(假设 `BDSL7I` 存在) ``` BDSL7I 的平均值: 包含以下字段的 struct: CS_Total: 1112 CS_Slip: 746 CS_Epoch: 0 CS_Satell: 179 CS_Signal: 1 ``` --- ## ✅ 解释 - `containers.Map`:用于按信号类型分类存储数据。 - `strsplit`:用于解析每行数据。 - `struct`:将每行数据封装为结构体。 - `mean`:对每类信号的所有数据计算平均值。 - `isKey`:检查是否已存在某信号类型。 --- ## ✅ 注意事项 - 确保文件格式统一,数据字段位置一致。 - 如果数据量很大,可考虑使用 `textscan` 提高读取效率。 - 如果信号类型很多,可以将平均值结果导出为表格或 `.mat` 文件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值