读取文件的行数和文件名并存储到变量i1和i2中。

wc -c a.sh | eval $(awk -F '{print "i1="$1";i2="$2}')
%% ================================ 原始数据&滤波参数调整 =========================================================== % 可调节参数 Mid_alpha_double = 0.6; High_alpha_double = 0.25; Low_alpha_double = 0.55; limit_up = 75; limit_down = 50; Avgwindow = 12; K = 1 + 1/4; K2 = 1 + 1/4; K3 = 1 + 1/4; Save_Path = 'C:\Users\haora\Desktop\MATLAB\TOUCH\PROCESSED_DATA\多频点滤波验证\多频点滤波结果 1.csv'; raw_1MHz_data = My_readExcelColumn("动态3v 2.xlsx" , "动态3v 2" ,"I0"); raw_13MHz_data = My_readExcelColumn("动态3v 2.xlsx" , "动态3v 2" ,"I1"); Freq1MHz_Point = Touch_Filter( raw_1MHz_data ); Freq13MHz_Point = Touch_Filter( raw_13MHz_data ); Freq1MHz_Point = Freq1MHz_Point.setParameters(Mid_alpha_double , High_alpha_double , Low_alpha_double ... ,limit_up , limit_down , Avgwindow , K ,Save_Path); Freq13MHz_Point = Freq13MHz_Point.setParameters(Mid_alpha_double , High_alpha_double , Low_alpha_double ... ,limit_up , limit_down , Avgwindow , K ,Save_Path); Freq1MHz_Point.Process(1); Freq13MHz_Point.Process(2); %% ================================ 比较器函数及保存 =========================================================== % 类定义 Comper1MHz_Point = TouchComper(); Comper13MHz_Point = TouchComper(); % 关键数组 lenth = Freq1MHz_Point.len ; lenth13 = Freq13MHz_Point.len ; % 峰值 Comper1MHz_Point_PeakValue = zeros(1,lenth,"double"); Comper13MHz_Point_PeakValue = zeros(1,lenth13,"double"); % 极性 Comper1MHz_Point_hiddenPolarity = zeros(1,lenth,"double"); Comper13MHz_Point_hiddenPolarity = zeros(1,lenth13,"double"); % 计时器 Comper1MHz_Point_TimeCount = zeros(1,lenth,"double"); Comper13MHz_Point_TimeCount = zeros(1,lenth13,"double"); % 震荡计数器 Comper1MHz_Point_TSD_ShakeCnt = zeros(1,lenth,"double"); Comper13MHz_Point_TSD_ShakeCnt = zeros(1,lenth13,"double"); % FIFO的 Comper1MHz_Point_FifoSum = zeros(1,lenth,"double"); Comper13MHz_Point_FifoSum = zeros(1,lenth13,"double"); % 当前触摸状态 Comper1MHz_Point_CurrentTouchSt = zeros(1,lenth,"double"); Comper13MHz_Point_CurrentTouchSt = zeros(1,lenth13,"double"); % 过去触摸状态 Comper1MHz_Point_PurrentTouchSt = zeros(1,lenth,"double"); Comper13MHz_Point_PurrentTouchSt = zeros(1,lenth13,"double"); % 运算 for i = 1 : lenth FilterResult1 = Freq1MHz_Point.ResultDta(i); Comper1MHz_Point.New_TouchTheComparatorFunction(FilterResult1); % 峰值 Comper1MHzclc_Point_PeakValue(i) = Comper1MHz_Point.PeakValue; % 极性 Comper1MHz_Point_hiddenPolarity(i) = Comper1MHz_Point.hiddenPolarity; % 计时器 Comper1MHz_Point_TimeCount(i) = Comper1MHz_Point.TimeCount; % 震荡计数器 Comper1MHz_Point_TSD_ShakeCnt(i) = Comper1MHz_Point.TSD_ShakeCnt; % FIFO的 Comper1MHz_Point_FifoSum(i) = Comper1MHz_Point.Fifo_Sum; % 当前触摸状态 Comper1MHz_Point_CurrentTouchSt(i) = Comper1MHz_Point.Current_TouchSt; % 过去触摸状态 Comper1MHz_Point_PurrentTouchSt(i) = Comper1MHz_Point.previous_TouchSt; end for i = 1 : lenth13 FilterResult2 = Freq13MHz_Point.ResultDta(i); Comper13MHz_Point.New_TouchTheComparatorFunction(FilterResult2); % 峰值 Comper13MHz_Point_PeakValue(i) = Comper13MHz_Point.PeakValue + 100 ; % 极性 Comper13MHz_Point_hiddenPolarity(i) = Comper13MHz_Point.hiddenPolarity + 100 ; % 计时器 Comper13MHz_Point_TimeCount(i) = Comper13MHz_Point.TimeCount + 100 ; % 震荡计数器 Comper13MHz_Point_TSD_ShakeCnt(i) = Comper13MHz_Point.TSD_ShakeCnt + 100 ; % FIFO的 Comper13MHz_Point_FifoSum(i) = Comper13MHz_Point.Fifo_Sum + 100 ; % 当前触摸状态 Comper13MHz_Point_CurrentTouchSt(i) = Comper13MHz_Point.Current_TouchSt + 100 ; % 过去触摸状态 Comper13MHz_Point_PurrentTouchSt(i) = Comper13MHz_Point.previous_TouchSt + 100 ; end %% =========================================================== 数据保存 % 元胞数组转换 % 峰值 Comper1MHz_Point_PeakValue_col = row2col(Comper1MHz_Point_PeakValue); Comper13MHz_Point_PeakValue_col = row2col(Comper13MHz_Point_PeakValue); % 极性 Comper1MHz_Point_hiddenPolarity_col = row2col(Comper1MHz_Point_hiddenPolarity); Comper13MHz_Point_hiddenPolarity_col = row2col(Comper13MHz_Point_hiddenPolarity); % 计时器 Comper1MHz_Point_TimeCount_col = row2col(Comper1MHz_Point_TimeCount); Comper13MHz_Point_TimeCount_col = row2col(Comper13MHz_Point_TimeCount); % 震荡计数器 Comper1MHz_Point_TSD_ShakeCnt_col = row2col(Comper1MHz_Point_TSD_ShakeCnt); Comper13MHz_Point_TSD_ShakeCnt_col = row2col(Comper13MHz_Point_TSD_ShakeCnt); % FIFO的 Comper1MHz_Point_FifoSum_col = row2col(Comper1MHz_Point_FifoSum); Comper13MHz_Point_FifoSum_col = row2col(Comper13MHz_Point_FifoSum); % 当前触摸状态 Comper1MHz_Point_CurrentTouchSt_col = row2col(Comper1MHz_Point_CurrentTouchSt); Comper13MHz_Point_CurrentTouchSt_col = row2col(Comper13MHz_Point_CurrentTouchSt); % 过去触摸状态 Comper1MHz_Point_PurrentTouchSt_col = row2col(Comper1MHz_Point_PurrentTouchSt); Comper13MHz_Point_PurrentTouchSt_col = row2col(Comper13MHz_Point_PurrentTouchSt); % 写入CSV文件 writeColumnToCSV(Save_Path, Comper1MHz_Point_PeakValue_col, 11); writeColumnToCSV(Save_Path, Comper1MHz_Point_hiddenPolarity_col, 12); writeColumnToCSV(Save_Path, Comper1MHz_Point_TimeCount_col, 13); writeColumnToCSV(Save_Path, Comper1MHz_Point_FifoSum_col, 14); writeColumnToCSV(Save_Path, Comper1MHz_Point_TSD_ShakeCnt_col, 15); writeColumnToCSV(Save_Path, Comper1MHz_Point_CurrentTouchSt_col, 16); writeColumnToCSV(Save_Path, Comper1MHz_Point_PurrentTouchSt_col, 17); writeColumnToCSV(Save_Path, Comper13MHz_Point_PeakValue_col, 18); writeColumnToCSV(Save_Path, Comper13MHz_Point_hiddenPolarity_col, 19); writeColumnToCSV(Save_Path, Comper13MHz_Point_TimeCount_col, 20); writeColumnToCSV(Save_Path, Comper13MHz_Point_TSD_ShakeCnt_col, 21); writeColumnToCSV(Save_Path, Comper13MHz_Point_FifoSum_col, 22); writeColumnToCSV(Save_Path, Comper13MHz_Point_CurrentTouchSt_col, 23); writeColumnToCSV(Save_Path, Comper13MHz_Point_PurrentTouchSt_col, 24); %% ================================ 置信函数相关 =========================================================== % 置信函数相关参数 % 当前信任频点 % function writeColumnToCSV(filename, data, columnIndex) % WRITECOLUMNTOCSV 将数组写入CSV文件的指定列,支持自定义路径 % 参数: % filename - 字符串,目标CSV文件完整路径(例如 'C:\data\results.csv') % data - 数值数组、字符串数组或字符元胞数组 % columnIndex - 正整数,指定数据写入的列号(从1开始) % % 新增功能: % 1. 支持完整文件路径输入 % 2. 自动创建缺失的目录 % =============== 参数验证 =============== try if ~ischar(filename) || isempty(filename) error('文件名必须是非空字符串'); end % 检查路径合法性 [filepath, ~, ext] = fileparts(filename); if isempty(ext) error('文件名必须包含扩展名(如 .csv)'); end if ~isnumeric(columnIndex) || columnIndex < 1 || mod(columnIndex,1) ~= 0 error('列号必须是大于0的整数'); end if ~isnumeric(data) && ~iscellstr(data) && ~isstring(data) error('数据必须是数值数组、字符串数组或字符元胞数组'); end data = data(:); numRows = length(data); catch ME fprintf('参数错误: %s\n', ME.message); rethrow(ME); end % =============== 目录创建 =============== % 新增功能:自动创建缺失目录 if ~isempty(filepath) && ~isfolder(filepath) try mkdir(filepath); fprintf('创建目录: %s\n', filepath); catch ME error('目录创建失败: %s', ME.message); end end % =============== 文件处理 =============== try % 读取现有文件或初始化 if exist(filename, 'file') == 2 fileCell = readcell(filename); % 将missing类型转换为空字符串 for i = 1:numel(fileCell) try if ismissing(fileCell{i}) fileCell{i} = ''; end catch continue; % 跳过不支持ismissing的类型 end end else fileCell = {}; end [currentRows, currentCols] = size(fileCell); % 扩展列数 if columnIndex > currentCols fileCell(:, end+1:columnIndex) = {''}; [currentRows, currentCols] = size(fileCell); end % 扩展行数 if numRows > currentRows fileCell(end+1:numRows, 1:currentCols) = {''}; end % 数据转换 if isnumeric(data) dataCell = num2cell(data); for i = 1:numel(dataCell) if isnumeric(dataCell{i}) && isnan(dataCell{i}) dataCell{i} = ''; end end elseif isstring(data) dataCell = cellstr(data); else dataCell = data; end % 数据写入 fileCell(1:numRows, columnIndex) = dataCell; writecell(fileCell, filename); fprintf('成功写入 %d 行数据到 %s 的第 %d 列\n', ... numRows, filename, columnIndex); catch ME fprintf('文件操作错误: %s\n', ME.message); rethrow(ME); end end 如何提高写入的速度
最新发布
10-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值