-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathintersecaoTx.m
59 lines (44 loc) · 2.52 KB
/
intersecaoTx.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
function RegiaoBusca = intersecaoTx(nTx,CoberturaRegiaoInteresse,RegiaoInteresse,Coord,elevacao)
%determinando os maiores interferentes a fim de determinar a direcao de
%movimentacao
RegiaoBusca = zeros(nTx,size(CoberturaRegiaoInteresse(1,:,:),2),size(CoberturaRegiaoInteresse(1,:,:),3));
if nTx <= 2
RegiaoBusca = ones(nTx,size(CoberturaRegiaoInteresse(1,:,:),2),size(CoberturaRegiaoInteresse(1,:,:),3));
return
end
combinacoes = nchoosek(1:nTx,2); %todas as combinacoes possiveis 2 a 2 entre Txs
combinacoes(:,3) = 0;
MaioresInter = zeros(nTx,2);
MatrizIntersecao = zeros(size(combinacoes,1),size(CoberturaRegiaoInteresse(1,:,:),2),size(CoberturaRegiaoInteresse(1,:,:),3));
%verifica a intereferência entre Txs e conta a sua quantidade
for i = 1:size(combinacoes,1)
MatrizIntersecao(i,:,:)= reshape(CoberturaRegiaoInteresse(combinacoes(i,1),:,:),[size(RegiaoInteresse,1),size(RegiaoInteresse,2)]).*reshape(CoberturaRegiaoInteresse(combinacoes(i,2),:,:),[size(RegiaoInteresse,1) size(RegiaoInteresse,2)]).*RegiaoInteresse;
ContInter = size(find(MatrizIntersecao(i,:,:) == 1),1);
while ismember(ContInter,combinacoes(:,3)) == 1
ContInter = ContInter + 0.00001;
end
combinacoes(i,3) = ContInter;
end
for i=1:nTx
[linha, ~] = find(combinacoes(:,1:2) == i);
sortedValues = sort(combinacoes(linha,3),'descend');
maxValues = unique(sortedValues(1:2));
maximos = combinacoes(linha,:);
% [~, maxIndex] = ismember(maxValues,combinacoes(linha,3));
[~, maxIndex] = ismember(maxValues,maximos(:,3));
Nmaiores = maximos(maxIndex,1:2);
MaxInter = maximos(maxIndex,3);
% [linha,~] = find(combinacoes(maxIndex,1:2) == i);
[index] = find(Nmaiores ~= i);
% [linha, ~] = find(combinacoes(:,3) == maxValues);
% index = find(combinacoes(maxIndex,1:2) ~= i);
% MaioresInter(i,1:2) = combinacoes(index)';
MaioresInter(i,1:2) = Nmaiores(index);
% MaioresInter(i,3:4) = fliplr(combinacoes(linha,3)');
MaioresInter(i,3:4) = (MaxInter);
if max(MaioresInter(i,3:4)) < 10^(-4) || min(MaioresInter(i,3:4)) < 10^(-4)
RegiaoBusca(i,:,:) = ones(size(elevacao,1),size(elevacao,2));
end
end
RegiaoBusca = Direcao(MaioresInter,Coord,elevacao,RegiaoBusca);
end