咨询Scilab csvRead批量读取Pene_n.txt及矩阵无表头覆写方法
问题修正方法
代码跑不通的两个核心原因
listfiles匹配参数错了:现在代码里传的"pene.txt"是精确匹配单个固定文件,根本搜不到所有Pene_n.txt格式的文件,换成通配符"Pene_*.txt"就能匹配到所有n为数字的目标文件。csvRead的文件路径构造不对:Scilab 不支持("格式串",变量)这种写法生成文件名,你现在写的那行本质是个元组表达式,根本不是合法的文件路径,必须用msprintf把占位符格式和循环变量拼接成实际的文件名字符串,再传给读文件函数。
无表头场景下的矩阵覆盖
因为读入的本身就是无表头的纯数据矩阵,不需要做跳过表头的行列偏移,直接对矩阵变量赋值就能覆盖原有旧数据,根本不需要找什么特殊简便命令。如果需要把多个文件的读入结果合并成总矩阵,直接按纵向/横向拼接矩阵即可。
可直接运行的修正代码
// 检索所有目标格式的文件 file_list = listfiles("Pene_*.txt"); file_count = size(file_list, "r"); Data = []; // 预初始化变量,避免循环中调用时报未定义错误 for i = 1:file_count // 拼接当前循环对应的实际文件名 file_name = msprintf("Pene_%d.txt", i); temp_data = csvRead(file_name, ";", "", "string"); // 按实际需求选逻辑: // 逐文件覆盖原有矩阵内容: // Data = temp_data; // 多文件纵向拼接为总矩阵: Data = [Data; temp_data]; end
内容的提问来源于stack exchange,提问作者kubas126
相关产品推荐
相关产品推荐

