笔者经常编写matlab处理日常工作,比如读写文本文件、数据表格、guide可视化界面等等,matlab以其强大的函数和矩阵运算功能闻名。
本人在编写程序的过程中常常迷茫是否有相关函数支持我要实现的某一功能,只有积累的多了才能游刃有余。如果不经常用,或许一段时间之后就忘记了很多的函数用法或技巧,因此有必要做一下日志。
这里仅记录函数名称,具体用法可参考help,可在命令行窗口输入doc查询。
一、字符串操作
1.打开文件:uigetfile( )和fopen( )
uigetfile提供对话框窗口选择并读取需要的文件,返回FileName和FilePath。
[FileName,FilePath] = uigetfile('*.txt');
fopen打开文件返回正整数的文件标识符。
fid = fopen('*.txt','r');
2.遍历文件并读取一行字符串:while循环和fgetl( )
while ~feof(fid) %feof函数判断是否到达文件最后
str=fgetl(fid); %读取某一行字符串
end
fclose(fid);
3.查找字符串:strfind( )
strfind(strCL, '/begin start') %查找字符串'/begin start'
4.字符串分割:regexp( )
Str=regexp(str,'\s+','split'); %按照正则表达式'\s+'分割字符串
5.字符串删除末尾空格:deblank( )
%% matlab example
A{1,1} = 'MATLAB ';
A = deblank(A)
A =
'MATLAB'
6.字符串拼接:strcat( )、char( )、[ ]
strcat( )函数返回横向拼接的字符串。
char( )函数返回char型的字符串。
[ ]中括号用了拼接数组、字符串。
7.字符串写入到文件:for循环+fprintf( )
fid = fopen('*.txt','w');
for i = 1:size(Lay, 1)
fprintf(fid, '%s\n', Lay{i}); %将cell型Lay的每一行字符串写入到文本
end
二、数据表格操作
1.读取excel里某个sheet里的数据:xlsread( )
[FileName,PathName] = uigetfile('*.xlsx','Select the Excel file');
[~,~,sheet0] = xlsread(FileName,'sheet0');
data0 = sheet0(:,:); %读取sheet0所有行和列的数据到data0
2.eval( )和evalin( )
eval( )函数实现括号中字符串表达式的执行
%*****************************************************
%类似于直接在命令行窗口输入
%save('C:\MATLAB\2015b\bin\work\file\MPi.txt','MPstr');
%实现循环写入到不同文件中
%******************************************************
for i=1:length
eval(['save(''','C:\MATLAB\2015b\bin\work\file\MP',...
num2str(i),'.txt''',',','''MPstr'')']);
end
evalin( )函数可以获取workspace里的变量
v = evalin('base', 'var');%获取workspace里名为var的变量
value = evalin('base', 'whos');%获取workspace里所有的变量
三、guide界面编程
1.界面设计推荐使用GUI Layout Toolbox工具
可在matlab官网下载
https://ww2.mathworks.cn/matlabcentral/fileexchange/27758-gui-layout-toolbox
2.waitbar使用:结合for循环
wait_h = waitbar(0,'Processing...');
for i = 2:timeLength
...
if mod(i,10000) == 0
waitbar(i/timeLength,wait_h);
end
end
另外,熟练运用if、for、while语句是提高的关键,不断地实践并调试有助于编程逻辑能力的提高。
今日内容暂时如此,如有问题不吝赐教!
作者:Wayne J
邮箱:[email protected]