2017-02-08 7 views
0

の作成、問題は、私は明示的に分からないです構造体の名前。どうして?私のモデルはワークスペースブロックから使用され、2D配列はMathworksのドキュメントに従って構造体フォームが必要です。下記参照。は、私は私の機能の一つ内側からベースワークスペース内の構造体を作成し、値とそれらを埋めるために必要な機能から、ベースワークスペース内の構造(2次元配列のためのワークスペースブロックからなだめる)

%some function 
function [SimulationData,Error,Warnings] = ExtractTestCaseData(TestCaseFile,TestCase,OutputType) 
. 
. 
[NumericData,TextData,RawData] = xlsread(TestCaseFile,TestCase); 
. 
. 
%logic to create and populate simulationData structure with data from excel file 
. 
. 
if regularVector 
    assignin('base',SimulationData.Input(InputIndex).Name,SimulationData.Input(InputIndex).Values(1,:)); %no problem 
elseif 2DArray 
    %now what? I need in the base workspace 
    %var.time=[TimeValues] 
    %var.signals.values=[DataValues] 
    %var.signals.dimensions=[DimValues] 
    assignin('base',SimulationData.Input(InputIndex).Name,'1');%create signal name with random value, I don't know the value of Name, need to convert to structure form as in the comments 
    evalin('base','nameIDontKnow.time=SimulationData.Time;'); %two problems actually, referencing a name I don't know in base workspace and base workspace has no concept of what SimulatinData.Time is, and so on if you catch my drift. 
. 
. 
end 

誰でもこの作品を作成する方法はありますか?

+0

誰?質問は明確ではない? – thoughtMaze

答えて

0

私の解決策

for InputIndex 
    %2D arrays must be in structure form for from workspace blocks (Mathworks) 
    %make structure in base workspace and populate with values 
    assignin('base','InputIndex',InputIndex);     
    assignin('base',SimulationData.Input(InputIndex).Name,'[]');%create the signal/structure name give random value for now      
    evalin('base', sprintf('%s.time=Time;',SimulationData.Input(InputIndex).Name)); 
    assignin('base','Values',SimulationData.Input(InputIndex).Values); 
    evalin('base', sprintf('%s.signals.values=Values;',SimulationData.Input(InputIndex).Name)); 
    assignin('base','Dimensions',[size(SimulationData.Input(InputIndex).Values,1) size(SimulationData.Input(InputIndex).Values,2)]); 
    evalin('base', sprintf('%s.signals.dimensions=Dimensions;',SimulationData.Input(InputIndex).Name)); 
end 
関連する問題