Я строю модель Simulink, в которой я использую следующий функциональный блок MATLAB:
function Out = whatever(Index, In)
% Column vector containing some points
Points = ([0, 0, 3, 49, 155, 339, 628, 1036, 1549, 2019, 2580, 2900, 3000]./1000)';
% Use "Index" as index to access the corresponding points in my diagram-array
Out = (Points(Index));
end
Сигнал Index - это массив, который я импортирую из рабочей области, он состоит только из целых чисел, больших нуля. Каждый временной шаг в Simulink соответствует одному значению в этом массиве. Теперь, когда я моделирую модель, я получаю следующую ошибку:
An error occurred while running the simulation and the simulation was terminated
Caused by:
Index exceeds array dimensions. Index value 0 exceeds valid range [1-20] of array LK_E115.
Error in 'sim_EnergySystem/WEA Berechnung (Enercon E 115 Referenz)' (line 9)
W_Wea_El_Out = (LK_E115(Sep_Wea));
Это может показаться странным, потому что изменили имена переменных для упрощения. Что меня раздражает, так это то, что Simulink, по-видимому, рассматривает по крайней мере одно значение в моем массиве «Index» как ноль. Я подтвердил это, добавив +1 к индексу, после чего ошибка не произошла.
Поскольку я достаточно опытен в Matlab, но плохо знаком с Simulink, я подозреваю, что стал жертвой некоторой фоновой функции здесь.
Кто-нибудь знает, что может вызвать такое поведение?