Невозможно выполнить назначение, потому что индексы на левой стороне не совместимы с размером на правой стороне. Что это значит? - PullRequest
0 голосов
/ 15 октября 2019

Невозможно выполнить назначение, потому что индексы на левой стороне не совместимы с размером на правой стороне. Что это значит?

Ошибка в сегменте (n_start) = данные (n_start: (n_start + window_size-1));

%% input data matrix
DDD=load('data2.mat');
data=DDD.data;
N_max=length(data);
window_size=256*3; %% 256 for 1 second ==> 3 seconds
step_win=128*3; %% overlapping window ...by 50%
segment=zeros(4798,768);
count=0;
for n_start = 1:step_win:(N_max-window_size)
    count=count+1;
    segment(n_start)=data(n_start:(n_start+ window_size-1));
end
plot(Segment)
xlabel('time')
grid on;
title('data of channel1');

1 Ответ

0 голосов
/ 15 октября 2019

В отрывке:

segment(n_start)=data(n_start:(n_start+ window_size-1));

Вы пытаетесь приписать вектор матрице 1x1.

Если segment - это вектор, тогда segment(n_start) - это его значение вместоположение n_start, если n_start в целом числе, то segment(n_start) равно 1x1.

С другой стороны, n_start:(n_start+ window_size-1) - это вектор, который простирается от n_start и увеличивается один за другим до (n_start+ window_size-1). И это из-за того, как работает оператор :. Поскольку window_size=256*3, то это вектор длиной 767.

Когда вы вызываете data(n_start:(n_start+ window_size-1)), вы запрашиваете все значения данных в индексах, содержащихся в векторе n_start:(n_start+ window_size-1).

Следовательно, в строке ошибки вы пытаетесь приписать вектор размером 767x1 матрице 1x1. вот почему это не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...