Simulink рассматривает ненулевое значение индекса как ноль - PullRequest
0 голосов
/ 24 марта 2020

Я строю модель 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, я подозреваю, что стал жертвой некоторой фоновой функции здесь.

Кто-нибудь знает, что может вызвать такое поведение?

...