Я очень боится, чтобы спросить об этом, но я не знаю, какое-либо образом сместить индекс в разреженной матрице без петлисдвиг индекса разреженной матрицы без петли в MATLAB
разреженной матрицы является чем-то вроде этого
a =
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 1 0 0 1
0 0 0 0 0 0 0
0 0 0 1 0 1 1
0 0 0 0 0 0 0
0 0 0 0 0 0 0
my initial matrix of indexes and value is:
a = [3 7 1;
3 4 1;
5 6 1;
5 7 1;
5 4 1 ]
uniq_x = [3,5]
uniq_y=[4,6,7]
желаемый результат будет:
out = [1 3;
1 1;
2 2;
2 3;
2 1]
Мое первое решение выглядит следующим образом:
for i=1:size(uniq_x ,1)
a(a(:,1)==uniq_x(i,1),1)=i;
end
for i=1:size(uniq_y ,1)
a(a(:,2)==uniq_y(i,1),2)=i;
end
любое предложение? спасибо
I предложите вам объяснить, как вы добрались до 'out'. Где же «разреженные» матрицы? – Dan
, но также вы можете посмотреть на * третий * вывод функции ['unique'] (http://www.mathworks.com/help/matlab/ref/unique.html). Вам все равно придется перебирать столбцы (или если вам просто нужны два столбца, дважды вызывайте 'unique') – Dan
спасибо @Dan за ваш полезный комментарий Я попытался улучшить вопрос, показывающий разреженную матрицу –