Я импортирую данные из Simulink, переворачиваю данные, а затем пытаюсь импортировать данные с помощью блока Simulink:
from workspace
Это всегда возвращает ошибку. Я пробовал это, но это не работает:
simOut = sim('sim1', Simulation_Time);
t = simOut.P.time;
P_tilde = simOut.P.Data; % size: 2x2x3001
P_data = flip(P_tilde); % size: 2x2x3001, but with the data flipped
P_import = P_data; % import block for 'sim2'
simOut2 = sim('sim2', Simulation_Time);
Ошибка вернулась:
Unsupported input format for From Workspace block 'sim2/From Workspace'. Available formats are double non-complex matrix, a structure with or without time, or a structure with MATLAB timeseries as leaf nodes. All formats require the data to be finite (not Inf or NaN).
Кто-нибудь знает, как это решить? Я пробовал и читал описание блока «из рабочей области», но я не умнее. Например, функции, рекомендуемые к использованию; «timeseries (P_data)» или «timetable (P_data)» не работают и просто возвращают ошибки.
Решение немного сложное, но оно работает. Я переворачиваю каждый элемент матрицы mx 2x2xn, затем создаю временную серию():
simOut = sim('m2_simP', 'StartTime','0','StopTime', num2str(Simulation_Time),'FixedStep',num2str(Time_Step));
t = simOut.P.time;
P_tilde = simOut.P.Data;
p11 = flip(reshape(P_tilde(1,1,:),[],1));
p12 = flip(reshape(P_tilde(1,2,:),[],1));
p22 = flip(reshape(P_tilde(2,2,:),[],1));
for i = 1:size(t,1)
P_data(1,1,i) = p11(i,1);
P_data(1,2,i) = p12(i,1);
P_data(2,1,i) = p12(i,1);
P_data(2,2,i) = p22(i,1);
end
P_import = timeseries(P_data, t);