MATLAB 在gui界面上像Comman Window那样显示运行结果以及文件批处理
帮一个同学做毕设,她的问题是需要选中一个文档,然后提取其中的关键字及其后面的数字,再在gui界面中输出提取的数字。文件部分内容如下:
<span style="font-size:12px;">BufferImageNum=32 DetectorChannelNumHorizontal=1944 DetectorChannelNumVertical=1536 DetectorResolutionH=0.0748 DetectorResolutionV=0.0748 DetetorOffsetH= -31.3689 DetetorOffsetV=59.6965 SDD=574.2714 SOD=348.0044 VolumeBlockNumUsingGpu(divide volume to ? blocks)=1 Voltage=50 </span>需要提取中间的的’BufferImageNum‘和’DetectorRosolutionH‘等关键字,并输出其后面的数字。解决这部分问题的MATLAB程序如下:
<span style="font-size:12px;">%寻找关键字并提取数字 D=importdata('geo.ini');%读取geo.ini [M,N]=size(D); for i=1:M T=strfind(D{i},'BufferImageNum=')%寻找所有行中含有字符串BufferImageNum=的行 if T==1 P=D{i}%找到后用P存储此行字符串,即BufferImageNum=32 S=P(regexp(P,'\d'))%找到此字符串中的数字,即32 return end end</span>其中用到:
tips1:importdata(filename) 导入文件数据,读出来是53*1的cell格式,调用第i行的数据需要用{i},而不是用[i];
tips2:strfind(s1,s2)在字符串s1中寻找字符串s2,当找到时,返回s2在s1中位置,以数字表示。
tips3:regexp()正则表达式函数,用于在一长串字符串中对特定字符串进行查找。扩展的还有regexpi和regexprep。其中regexp(P,'\d')表示查找出字符串P中的数字并返回其在P中的位置,S=P(regexp(P,'\d'))即输出此数字。
tips4:FID=fopen(filename,permission) 用指定的方式打开文件。若输出FID=+N表示文件打开成功,文件代号是N。若输出FID=-1,表示文件打开不成功。打开文件 permission参数自行查找。
若知道文件的路径和名称,可用fopen([PathName FileName])这种方式读取文件,不过若FileName是cell格式需要先用char(FileName)把FileName从cell转化为string。
若PathName=D:\Program Files\MATLAB\R2014b\mywork 最后没有斜杠,可以用fopen([Path_Name '\' File_Name])这种形式读取。
tips5:读取一个文件夹中同一格式的所有文件:
dirs=dir('D:\Program Files\MATLAB\R2014b\mywork\*.prj')得到dirs是结构体,包含所有文件的具体信息。
dircell=struct2cell(dirs) 即把结构体软化为cell,便于读取。
tips6:[FileName,PathName] =uigetfile({'*.ini','files.ini'},'选择文件');%在文件夹中手动选择文件,并获取所选文件的信息(文件名和路径)
Path_Name = uigetdir('选择文件夹'); %选择文件夹并获取所选文件夹的路径
tips7:在matlab 的gui设计中,若要在界面上显示运算的结果(就像在Command Window 中那样),可用static text控件或者edit text控件,设置文件显示内容如下:
struct={'viewNum=' 'w=' 'h=' 'DetectorResolutionH=' 'wisize';viewNum w h dpixel wisize};
set(handles.text_show,'string',struct);
PS:使用struct格式是因为这样才有换行。使用矩阵或cell都只能挤在一行输出。有说可以用textwrap()处理字符串进行换行的,我没有实现。
tips8:reshape(A,2,3) 把A中的元素重新排列,排成2行3列。
tips9:进行文件批处理的思路:先把文件夹中所有文件的信息存到allnames中,再选取allname(1,:)第一行即filename信息存到File_Name矩阵中,再用for循环对File_Name中所有的文件名称依次处理。
<span style="font-size:12px;">Path_Name = uigetdir('选择文件夹'); allnames = struct2cell(dir([Path_Name '\*.prj'])); [MX NY] = size(allnames); for i=1:NY FB = char(File_Name(i)); fid = fopen([Path_Name '\' FB],'rb');%打开% pic=chuli(fid); end for i=1:N FB=char(File_Name(i));%需要先转化为char格式 fid = fopen([Path_Name '\' FB],'rb');%读取文件 pic=chuli(fid); end</span>
- 点赞
- 收藏
- 分享
- 文章举报
- sublime编辑器用 command+B(ctrl+B) 直接运行js文件并直接显示结果
- 关于 'yarn' 不是内部或外部命令,也不是可运行的程序 或批处理文件 以及 yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
- matlab调用下摄像头,用GUI界面显示摄像头的画面并实现拍照
- Matlab GUI,显示学生成绩(读取txt,xls文件),打开文件对话框
- Docker容器图形界面显示(运行GUI软件)的配置方法
- Matlab---GUI界面编程2(m文件纯代码实现)
- python学习--MAC 安装VS Code(汉化安装中文插件)运行Python文件,以及终端显示py文件
- QTP运行发生错误是截屏并显示到结果文件中
- 如何使用Qt 4把ls命令的结果显示到GUI界面上去?-兼回答网友提问
- springMVC高级部分(数据校验,数据错误回显(自定义格式错误显示),拦截器,异常处理,文件上传,文件下载,springmvc运行流程以及springmvc和struts2对比)
- 让批处理运行时不显示界面
- 1, 编写程序,当用户在文本框中输入内容之后,单机不同的按钮,能够把文半框中的内容粘贴到文本区中。“重置”按钮实现将文本框和文本区中的内容清空。界面上的文本区只能显示内容,不能让用户输入文本。运行结果
- Linux下MATLAB中运行MATLAB程序并在web中显示结果
- 利用dos编写能生成EXE文件,并运行该文件,显示结果为:HOW ARE YOU。
- cmd界面下java可以,javac不能用--【'javac'不是内部或外部命令,也不是可运行的程序或批处理文件】
- matlab GUI界面变量值传递到其他.m文件
- C# 读取批处理文件(.bat)执行结果到程序显示
- MATLAB GUI 的一些小技巧(参数传递、结果显示、图像清除)
- 在cmd(命令提示符)输入xxx命令后显示“xxx不是内部或者外部命令,也不是可运行程序或批处理文件”
- (十三)Core Java GUI(图形化界面小程序开发,事件监听机制流程,以及可运行jar包的配置实现,) (109)