jingweimo的个人博客分享 http://blog.sciencenet.cn/u/jingweimo

博文

文本读写操作

已有 2440 次阅读 2015-7-16 10:28 |系统分类:科研笔记

%% 格式化文本的读操作
 
%只读形式打开txt文件
file_t = fopen('mytxt.txt','r');
%以十进制读取,且读取的数据自动排成一列,排的顺序为:先从第一行左边到第一行右边,然后排第二行
A = fscanf(file_t,'%d');
%关闭文件
fclose(file_t);
 
%% 使用textscan读取多列数据
file_t = fopen('mytxt.txt','r');
%将原来的两列数据以数组原包(cell)的形式读取,cell共有两个元素
A = textscan(file_t,'%d %d');
%C和上面A一样,D返回位置信息
[C,D] = textscan(file_t,'%d %d');
fclose(file_t);
A{1}            %原包数据的第一个元素对应第一列
A{2}
C
D
 
%% textread函数读取,现在不常用
%这种形式将每一列分别给A,B
[A,B] = textread('mytxt.txt','%d %d');
A
B
%这种形式将txt文件排成一列赋给C
C = textread('mytxt.txt','%d');
C
 
%% 忽略标题
file_t = fopen('headline.txt','r');
%忽略掉第一行的标题信息
A = textscan(file_t,'%d %d','HeaderLines',1);
A
 
%% 使用textscan扫描字符串中的数据
clc
str_1 = 'The number is 1 2 3 4 5';
%首先使用textscan获取第一个前14个字符
[str1,position1] = textscan(str_1,'%14c',1);
str1{:};         %The number is
position1;       %14
%获取字符串的长度
[temp1,temp2] = size(str_1);
%然后读取后面的数字字符串
str_2 = textscan(str_1(position1+1:temp2),'%9c',1);
%将字符串转化为数值
num = str2num(str_2{1})
 
 
%% 格式化文本的写操作
 
%使用fprintf向文件中写入数据
%写形式打开文件,存在就打开,不存在新创建一个文件开始写
file_1 = fopen('text_w.txt','w');
%以数字形式写入数据
fprintf(file_1,'%d',1225);
%关闭文件,返回0表示关闭成功
fclose(file_1);
 
%% 每写入一次换行或插入想要的字符
file_1 = fopen('text_w.txt','w');
%r回车符  n换行符   这里必须回车换行连用
fprintf(file_1,'%drn',[32;34]);
%每写入一个数字,后加一个空格,多列按列输出
temp = randint(4,2);
fprintf(file_1,'%d ',temp);
fclose(file_1);
 
%% fprintf在命令空间输出
str_1 = 'Hello! World!';
%这里fid = 1;这时输出换行只需n就行,%c为输出单个字符,%s为输出字符串
fprintf(1,'%cn',str_1);
%% 扫描字符串2
clear
clc
str = '1985 112 -10.53';
%将 替换为0
A = find(str == 32);
str(A) = 48;
%下面这这一句相当于+198501120-10.53
%不是你给的+19850112-010.53
str2num(str)

 

% 
         % Matlab code to read a bunch of integers from a file... 
         % using fopen and fscanf.  See the Matlab topic of textread 
         % to see how to accomplish this much more easily 
         % 
 
         in_file = fopen('name_of_file', 'r'); // read only
 
         if (in_file == -1)
           error('oops, file can''t be read');
         end 
 
         [number, count] = fscanf(file, '%d', 1);
 
         while (count == 1) % while we have read a number 
 
           fprintf('We just read %dn', number);
 
           [number, count] = fscanf(file, '%d', 1); % attempt to read the next number 
         end 
       



https://blog.sciencenet.cn/blog-578676-905787.html

上一篇:Image view demonstration
下一篇:1-D Hilber transform and amplitude demodulation
收藏 IP: 35.10.57.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2025-1-7 07:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部