matlab中iniFile函数的使用

iniFile 从标准ini(ASCII)创建、读取或写入数据文件。这样的文件被分成若干部分([节名]),小节(用{小节名}括起来),和键(键=值)。空行和第一个非空的字符;(注释行)被忽略。

iniFile(fileName,‘write’,keys,<‘style’>)
写入以字符串的元胞数组给定的键值,可选样式变量:“tabbed”写入节,以标签样式显示子章节和键,以提高
可读性文件。“普通”样式是默认样式。这只会影响将被写入/重写的键。
iniFile(fileName,‘deletekeys’,keys)
删除键值和他们的值,如果存在的话。
[readsett,result] = iniFile(fileName,‘read’,keys)
读取键的值,其中readsett是键的字符串和/或数值组成元胞数组。如果没有键值被找到的话,未找到,则返回默认值(如果在键参数的第5列给了的话)。结果是字符串-每个键读取一个;如果正常,则为空;错误/警告
,则返回字符串;在这两种情况下,在readsett{i}中均返回空白的字符串。
[keys,sections,subsections] = iniFile(fName,‘readall’)
读整个文件,返回所有的节,子节和找到的键值。

关于作为输入参数给出的元胞数组的说明:
字符串的元胞数组;3列、4列或5列。每行的列数相同。列包括:
“section”:节名称字符串(如果空的视为根目录)
“subsection”:分段名称字符串(如果空的视为根目录)
“key”:要写入/读取的字段的名称(给定为字符串)。
“valeue”:在“写入”操作时要写入ini文件的(可选)字符串或数值(标量或矩阵),或在读取操作时转换为CHAR字符:“i”表示整数,“d”表示双精度,“s”或不提供时默认为string类型)。
默认值:当key没有找到或找到空值(“读取”操作)时(可选)字符串或数值(标量或矩阵)。如果未给出默认值,并且key未找到,返回空值。必须采用值,例如,如果值为“i”,则必须为以整数等形式给出。

例子:
假设我们需要一个新的ini文件test1.ini,它有4个字段,包括5x5矩阵(见下文)。我们可以将5个字段写入ini文件使用:


%       x = rand(5);    % matrix data 
%       inifile('test1.ini','new'); 
%       writeKeys = {'measurement','person','name','Primoz Cermelj';... 
%                   'measurement','protocol','id',1;... 
%                   'application','','description.m1','some...';... 
%                   'application','','description.m2','some...';... 
%                   'data','','x',x}; 
%       inifile('test1.ini','write',writeKeys,'plain')

wriKeys结构如下:
‘measurement’ ‘person’ ‘name’ ‘Primoz Cermelj’
‘measurement’ ‘protocol’ ‘id’ 1
‘application’ [] ‘description.m1’ ‘some…’
‘application’ [] ‘description.m2’ ‘some…’
‘data’ [] ‘x’ 5x5 double
是一个5*4的元胞矩阵,生成的test1.ini如下:
[application]
description.m1 = some…
description.m2 = some…
[data]
x = 0.75774 0.706046 0.823458 0.438744 0.489764;0.743132 0.0318328 0.694829 0.381558 0.445586;0.392227 0.276923 0.317099 0.765517 0.646313;0.655478 0.0461714 0.950222 0.7952 0.709365;0.171187 0.0971318 0.0344461 0.186873 0.754687
[measurement]
{person}
name = Primoz Cermelj
{protocol}
id = 1

 readKeys = {'measurement','person','name','','John Doe';... 
                  'measurement','protocol','id','i',0;... 
                  'application','','description.m1','','none';... 
                   'application','','description.m2','','none';... 
                   'data','','x','d',zeros(5)}; 
       readSett = iniFile('test1.ini','read',readKeys); 

这个程序的运行结果是:
‘Primoz Cermelj’
1
‘some…’
‘some…’
5x5 double

发布了83 篇原创文章 · 获赞 127 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_40788950/article/details/89475209
今日推荐