Команда Simulink sim не использует данные времени во входных временных рядах

Я пытаюсь научиться создавать тестовые ремни в Simulink. Для этого я сделал простой кросс-продукт и подключил к нему два векторных входа (u, v). test_harnness_cross_product

Внутри cross_product находится эта архитектура: cross_product_contents

Для запуска теста у меня есть отдельный скрипт, который вызывает команду sim ():

%% SETUP
clear, clc, close all


%overwrite these params just to be safe that they are correct...
options.LoadExternalInput = 'on';
options.ExternalInput = 'u_in, v_in';
options.StopTime = 'end_time';

% generate vector data
u_in_data = [1 0 0; 0 1 0];
v_in_data = [0 1 0; 0 0 1];

% u_in_data = 10*rand(num_el,3)-5; % 10x3 of -5 to 5
% v_in_data = 10*rand(num_el,3)-5; % 10x3 of -5 to 5

% sim options
sim_dt = 1;
model_name = 'harness_cross_product';
u_size = size(u_in_data);
num_el = u_size(1);
end_time = num_el-sim_dt;
y_out_e = zeros(num_el,3);
test_limit = 1e-9;

% Generate time data
u_in_time = 0:sim_dt:end_time;
v_in_time = u_in_time;

% define input timeseries
u_in = timeseries(u_in_data, u_in_time);
v_in = timeseries(v_in_data, v_in_time);

%% sim
simOut = sim(model_name,options);

%% comparison and scoring
y_out  = simOut.yout{1}.Values.Data;
y_out = y_out(1:num_el,:);

% fetch expected results
for indx=1:num_el
    y_out_e(indx,:) = cross(u_in_data(indx,:),v_in_data(indx,:));
end

% scoring
res_norm = norm(y_out-y_out_e);
if res_norm < test_limit
    test_score = 'passed';
else
    test_score = 'failed!';
end

disp(['Test ' test_score]);

Когда я запускаю скрипт, он не возвращает [0 0 1; -1 0 0]. Скорее, он возвращает массив из 51 строк по 3 столбца. Я почти уверен, что это имеет какое-то отношение к sim (), не понимая, что я хочу, чтобы он использовал дискретные времена u_in.Time = [0; 1], потому что вместо этого генерирует собственный вектор времени simOut.tout = [0: 0.02: 1]; Есть ли какая-то пара значений имени, которую мне нужно включить в структуру параметров, которой у меня нет?

unit-testing,time,simulink,

0

Ответов: 1


0

Я нашел проблему. Если у вас есть эта проблема, обязательно проверьте:

ModelConfigurationParameters> SolverOptions> Введите [select "Fixed-step" из выпадающего меню]

а также

ModelConfigurationParameters> SolverOptions> Solver [выберите «дискретные (без непрерывных состояний)» в раскрывающемся меню]

После выбора обоих этих параметров. Мой тест прошел.

Изменить: также может потребоваться установить

ModelConfigurationParameters> Additional options> Fixed-step size [set equal to 1]
модульное тестирование, время, Simulink,
Похожие вопросы
Яндекс.Метрика