利用结构来实现赋值
作者:MaYue 来源:转载http://ma-yue.net/archives/93 发布时间:2008-4-14 12:01:22
需要解决的问题是:针对不同的系统,想要为不同的系统参数来进行赋值,而每个系统的参数的名称可能不同,比如对于电路可能有C, L, R等,对于其他的系统可能会变成密度或者人口之类的其他名字。那么怎么能够将这个名称以及名称所对应的数值一次传递呢?
这里面我选择了结构(structure)来实现。也不知道好不好,但是功能上应该是没有问题了。
结构可以按照field name来组织不同类型的数据,那么可以用如下命令来定义一个10uF的电容和33mH的电感:
parameter = struct(’C', 10e-6, ‘L’, 33e-3);
C和L就是field name。可以用如下命令来取得field name:
names = fieldnames(parameter);
这里的names的类型是cell,cell类似于一般矩阵,但是每个元素可以是很复杂的其他类型的数据。这里就是要注意的一点,为了提取每个参数的名字的字符串(char),不能用names(1);这样的指令,这样取得的还是一个cell。提取cell中的元素为他本来的格式需要用“{}”而不是“[]”。
因此,我们就可以只传递一个parameter的结构,然后用如下代码:
names = fieldnames(parameter);
for i = 1:length(names),
eval([names{i}, ‘= parameter.’, names{i}]);
end
就可以得到类似于:C=10e-6; L=33e-3; 一样的赋值效果。但是这样的好处是(1)方便传递参数,(2)方便不同的系统的通用性,(3)不必具体考虑参数的名字与数值之间的对应关系,(4)可以方便地实现大量参数的多次赋值。
文章评论 (评论内容只代表网友观点,与本站立场无关!)

您当前的位置: