У меня есть следующий пример (это не работает!)подставляя матрицы на основе условия
a(1, 1:2, 1:2) = [1 2; 3 4];
a(2, 1:2, 1:2) = [5 6; 7 8];
b=a;
for i=1:2
b(a(i,:,:).*b(i,:,:) < 5.0) = 3*circshift(a(i,:,:), [1 0]);
end
Таким образом, идея в том, что все места, где a(i,:,:).*b(i,:,:)
меньше, чем пять, b(i,:,:)
должны получить значение 3*circshift(a, [1 0])
в этом месте. Это возможно?
Я могу, конечно, сделать это с кучей for
-loops, но это не похоже на наиболее оптимальное решение.
См. Мое редактирование, я имел в виду 'a (i,:,:). * B (i,:, :)', а не 'b (i,:, :)' ... извините – BillyJean
@BillyJean - Я отредактировал свой ответ, надеюсь, он ответит на ваш вопрос! – Erik
Я верю, что в коде есть ошибка, или вы, возможно, неправильно поняли меня. 'b' должно получить значение' 3 * circshift (a, [1 0]) '* в этом месте * – BillyJean