2015-05-27 7 views
1

У меня есть большой массив размером 64x4x45x14.Добавление меньшего массива в часть большего массива?

я инициализировать его на все нули, как:

Main = zeros(64,4,45,14); 

У меня есть еще один массив S_avg размерности 45x14;

Если я делаю что-то подобное, почему Matlab сообщает об ошибке?

Main(chan_no,level,:,:) = Main(chan_no,level,:,:) + S_avg ; 

ответ

0

Вы должны изменить матрицу S_avg первых, попробуйте это здесь

Main(chan_no,level,:,:) = Main(chan_no,level,:,:) + reshape(S_avg, 1, 1, size(S_avg, 1), size(S_avg, 2)) ; 

или если вы знаете размер S_avg наверняка

Main(chan_no,level,:,:) = Main(chan_no,level,:,:) + reshape(S_avg, 1, 1, 45, 14) ; 
+0

Спасибо. Это сработало для меня :) –

1

Вы можете удалить размеры одноэлементные с squeeze.

Используйте этот код вместо

Main(chan_no,level,:,:) = squeeze(Main(chan_no,level,:,:)) + S_avg ; 

Причина заключается в том, что,

size(Main(chan_no,level,:,:)) = 1 1 45 14 

В то время,

size(S_avg) = 45 14 

так что вы получите ошибку рассогласования в измерения.

+0

Это также решает мою проблему :) –

Смежные вопросы