0

simulink モデルを実行できる matlab ファイルを作成しようとしています。しかし、MATLAB から simulink モデルへのデータの送信に問題があります。私が持っているモデルではImport Block、matlab からデータのストリームを送信したいと考えています。

私の現在の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 モデル

simulink から結果を取得したり、定数 K.in1 を設定したりすることに問題はありません

4

1 に答える 1

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

于 2012-11-13T14:31:08.957 に答える