У меня есть большая матрица (500212x7) и вектор столбца, как показано ниже
matrix F vector P
0001011 4
0001101 3
1101100 6
0000110 1
1110000 7
Вектор содержит индексы, рассматриваемые в строках матрицы. Р (1) предназначен для указания на F (1,4), Р (2) на F (2,3) и так далее.
Я хочу отменить бит в каждой строке F в столбце, указанном элементом P (в той же строке).
Я думал о таких вещах, как
F(:,P(1)) = ~F(:,P(1));
F(:,P(:)) = ~F(:,P(:));
но, конечно, эти сценарии не дадут ожидаемого результата, так как первая строка не изменит элемент P, а вторая даже не позволит мне запустить программу, потому что полный вектор не может создать индекс.
Идея состоит в том, что мне нужно сделать это для всех строк F и P (изменяя / увеличивая «одновременно»), но взять значение элемента P.
Я знаю, что это легко достигается с помощью для цикла , но из-за больших размеров массива F такой способ решения проблемы совершенно неприемлем.
Существует ли какое-либо волшебство Matlab, позволяющее решить такую задачу с использованием матричных операций?