我想將一些程序性的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