Я хочу прочитать данные из файла мата в Simulink. Для создания файла данных и шины я использую объекты временных рядов.
dt = 0.1;
tend = 24;
t = 0:dt:24;
tk = size( t, 2 );
matrix_in = repmat( eye(3), 1, 1, tk );
scalar_in = t;
vector_in = randn( 3, tk );
vector_in_1 = vector_in;
vector_in_2 = vector_in;
vector_in_1( vector_in_1 <= 0.5 ) = 1;
vector_in_1( vector_in_1 > 0.5 ) = 0;
vector_in_2( vector_in_2 >= -0.5 ) = 1;
vector_in_2( vector_in_2 < -0.5 ) = 0;
vector_in = vector_in_1 + vector_in_2;
matrix_ts = timeseries( matrix_in, t, 'name', 'matrix_data' );
vector_ts = timeseries( vector_in, t, 'name', 'vector_data' );
scalar_ts = timeseries( scalar_in, t, 'name', 'scalar_data' );
matrix_ts = delsample( matrix_ts, 'Value', t( t >= 10 & t <= 15 ) );
vector_ts = delsample( vector_ts, 'Value', t( t >= 18 & t <= 20 ) );
scalar_ts = delsample( scalar_ts, 'Value', t( t >= 7 & t <= 11 ) );
data_struct = struct( 'matrix_in', matrix_ts, ...
'vector_in', vector_ts, ...
'scalar_in', scalar_ts );
save 'my_data' 'data_struct' -v7.3;
my_bus = Simulink.Bus.createObject( data_struct );
Тогда я хочу прочитать это в Simulink. Итак, у меня есть матрица, вектор и скаляр. У меня проблема в том, что скаляр имеет размерность [1 1], а не 1, и поэтому Simulink рассматривает его как матрицу / вектор, а Simulink не позволяет мне выполнять некоторые операции. Поэтому мой вопрос заключается в том, как я могу установить размер для скаляра равным 1, а не [1 1].
Файл Simulink находится здесь в MATLAB Central. Сначала запустите приведенный выше код, а затем файл Simulink.
EDIT
Я получил ответ, данные должны быть сжаты.
scalar_ts.Data = squeeze(scalar_ts.Data);