Matlab编程日志之常用技巧总结

笔者经常编写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
邮箱:1911736987@qq.com

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值