我想将一些程序性的MATLAB代码转换为OOP,但有点卡住了。下面是我的非OOP方法。我已经决定了的功能和文件,只是让这个演示是自包含...将程序性MATLAB转换为OOP
AllFileName = {'file1Red.asc','file2Green.asc','file3Blue.asc'}';
noOfFiles = numel(AllFileName);
for ii=1:1:noOfFiles
FileName = AllFileName{ii,1};
fileNo(ii) = str2num(FileName(5));
fileColor(ii,:) = {FileName(6:end-4)};
end
所有这些程序确实是创造fileNo
变量与[1;2;3]
填充它,并与他们对应的颜色fileColor
变量。
我想OOP版本首先加载的文件名,并基于这些文件对象的名称,例如:
对象:file1Red
,file2Green
,file3Blue
,
然后有它填充物与获得的属性通过我写的外部功能。因此,在我的例子:
对象:file1Red
属性::file1Red.no
= 1
,:file1Red.color
= Red
;
非常感谢帮助,谢谢。
编辑:更新了我的企图
的想法是,我从一个仪器。ASC文件,我想批量加载每个.ASC文件转换成一个类,并与信息比特填充类性质我选择..
我创建了一个类文件与通用于每一个数据集的属性:
classdef acfc < handle
properties
Temperature
Viscosity
RefractiveIndex
Wavelength
Angle
end
methods
function set.Temperature(this,v)
this.Temperature = v;
end
end
end
然后我用这个代码选择多个数据文件,其中他们的名字automatcial的LY被变成了一个类文件(这就是我想要的):
[AllFileName,PathName,FilterIndex] = uigetfile({'*.*';'*.txt';'*.asc'},'MultiSelect','on');
if iscellstr({AllFileName}) == 1
numOfFiles = 1;
AllFileName = {AllFileName};
else
numOfFiles = length(AllFileName);
end
for ii=1:1:numOfFiles
FileName = AllFileName{1,ii};
[pathstr,name,ext] = fileparts(FileName);
assignin('base', name, feval('acfc'));
end
但是,这是我坚持,我有一个名为我多么希望他们的类,但在循环过程我想进入该文件并取出相关信息(波长,角度等)。我可以使用自定义函数来做到这一点,但我不知道如何将这些信息放入同名的类文件信息中。
谢谢
你试过了什么?你怎么卡住了?或者这是一个伪装的问题:请翻译我的代码? – Schorsch 2014-09-05 17:06:54
@Schorsch我以为我完全在错误的轨道上,所以没有包括我的尝试...更新。 – 2014-09-05 17:50:32