2012-11-13 39 views
0

我嘗試創建一個可運行simulink模型的matlab文件。 但是,從MATLAB發送數據到simulink模型存在問題。 在模型中,我有Import Block,我想從matlab發送我的數據流。Matlab,Simulink,使用導入

我目前的matlab代碼是。

function result = CallSimulinkModel(modelName, timeStep, inputMatix, key) 
    if(timeStep<=0) 
     error('MATLAB:CallSimulinkModel','Timestep is lower or equal with 0'); 
    end 
    endTime = max(size(inputMatix))*timeStep; 
    result = SubCallSimulinkModel(modelName, 0:timeStep:endTime, inputMatix, key); 
    %OutVector.const = inConst; 
end 

function [result,constants] = SubCallSimulinkModel(var_model,time_var,inputMatix, K) 
    var_setting = simset(... 
     'SrcWorkspace','current'... 
    ); 
    % How to feed the sim model with the data from input matrix as Inport 
    % 1, Inport 2, ...? 
    [~,~,result] = sim(var_model, time_var, var_setting); 
    constants = K; 
end 

和模型是Simulink Model

我有在Simulink得到的結果或設定參數K.in1

回答

0

找到一個可行的解決方案沒有問題。

% For MATLAB R2012a 
function [result,time] = RunSimulinkModel(modelName, timeStep, inputMatix, key) 
    if(timeStep<=0) 
     error('MATLAB:RunSimulinkModel','Timestep is lower or equal with 0'); 
    end 
    endTime = max(size(inputMatix))*timeStep-timeStep; 

    %CCC = [time_var;D]' 
    % Is a 2 or more column that the first column is a time vector that 
    % hold all time and the other columns hold the data. 
    dataMatrix = [0:timeStep:endTime;inputMatix]'; 

    [result,time] = RunSimulinkModelSub(modelName, timeStep,dataMatrix,key); 

end 

function [result,time] = RunSimulinkModelSub(var_model,var_steptime, D,K) %#ok<INUSD> 
    var_setting = struct(... 
     'SrcWorkspace','current',... 
     'SaveTime','on','TimeSaveName','tout', ... 
     'SaveOutput','on','OutputSaveName','yout', ... 
     'LoadExternalInput', 'on', 'ExternalInput', 'D',... 
     'FixedStep', 'var_steptime' ... 
    ); 
    var_row_result = sim(var_model, var_setting); 
    result = var_row_result.get('yout'); 
    time = var_row_result.get('tout'); 
end 

'LoadExternalInput', 'on', 'ExternalInput', 'D',...會告訴模型中使用 數據從D隨着時間的矢量和數據矢量。