返回信息流文件格式如下,a.txt:
3
1 2 3
4 5 6
7
1.1 1.2 1.3
2.1 2.2 2.3
3.1 3.2 3.3
4.1 4.2 4.3
...
文件从第5行开始的矩阵是一个n*3的矩阵A,现在需要改写矩阵A的第三列(如把第三列+0.1),然后输出仍然是a.txt,其它都不变,应该怎么做呢?
ps:文件的第一行数字3,表示接下来有3行不需要处理的数据。即需要根据第一行的变量判断出来从第几行开始处理数据。也即,第一行为一个数字,设为变量a,即表示本文件需要从第a+2行开始处理数据。
恩...头痛死我了,跪求各位大神不胜感激~
这是一条镜像帖。来源:北邮人论坛 / matlab / #10625同步于 2014/2/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
[问题]跪求如何用maltlab改写文件的指定列
yuanxiaode11
2014/2/13镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
给你个撇一点的方案,你把文件存成excel表格文件,然后直接操作(VBA啊或者matlab读写表格文件都可以的),做法么,你可以百度一下,也就几个命令的事情
【 在 yuanxiaode11 的大作中提到: 】
: 文件格式如下,a.txt:
: 3
: 1 2 3
: ...................
这个应该可以实现相应功能:
附件(743B) file_convert.m
close all
clear all
%输入数据
fid = fopen('a.txt','r');
vartemp = textscan(fid, '%s%s%s%[\n\r]');
fclose(fid);
%相关参数设置
skip_row_temp = vartemp{:,1};
skip_row= str2num(skip_row_temp{1});
change_data = 0.1;
change_column = 3;
%相关列改变数值
varcolum = vartemp{:,change_column};
for ii = (1+skip_row+1):length(varcolum)
cell_data=varcolum{ii};
varcolum(ii) = {num2str(str2num(cell_data)+change_data)};
end
vartemp{:,change_column} = varcolum;
%输出数据
mm = length(varcolum);
nn = length(vartemp);
file_path = ['aa.txt'];
fid = fopen(file_path,'w+');
for ii = 1:mm
fprintf(fid, '%s %s %s \n',cell2mat(vartemp{1,1}(ii)),cell2mat(vartemp{1,2}(ii)),cell2mat(vartemp{1,3}(ii)));
end
fclose(fid);
结果:
【 在 yuanxiaode11 的大作中提到: 】
: 自己顶一下
【 在 yanglei5658 的大作中提到: 】
: 这个应该可以实现相应功能:[upload=2][/upload]
: close all
: clear all
: ...................
恩恩,谢谢,留下细看