Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. % Rishi Vadher
  2. % http://rishivadher.pt.vu
  3. function [missoes_novo] = opcao_1(nome_ficheiro)
  4. % Analisa o ficheiro escolhido
  5. a=zeros(248,256);
  6. fid = fopen (nome_ficheiro);
  7. if fid == -1
  8.     fprintf('Erro na abertura\n')
  9. else
  10.     %percorre a matriz ate à linha 142 e apresenta as linhas 22, 26 e 27
  11.     contador= 1;
  12.     while ~feof(fid) && contador<=142
  13.         linha = fgetl(fid);
  14.         if (contador==26);
  15.             fprintf('%s',linha)
  16.         end
  17.         if (contador==27)
  18.             fprintf('%s\n%s', linha(32:38),image_time)
  19.         end
  20.         if (contador==22)
  21.             image_time = linha;
  22.         end
  23.         if strfind(linha, 'END ');
  24.             break
  25.         end
  26.         contador=contador+1;
  27.     end
  28.     contador=143;
  29.     %valor de intensidade maior que qualquer um existente nos ficheiros
  30.     intensidade_min = 15000;
  31.     while ~feof(fid) && contador>142
  32.         linha1=fgetl(fid);
  33.         %Matriz das intensidades
  34.         %Atribui variaveis a strings
  35.         col1=str2double(linha1(1:3));
  36.         col2=str2double(linha1(5:9));
  37.         intensidade=str2double(linha1(40:44));
  38.         cordx = str2double (linha1(12:17));
  39.         cordy = str2double (linha1(21:25));
  40.         C(col1,col2) = intensidade;      
  41.         %procura a linha com menor valor de intensidade
  42.         %a essa linha atribui novas variaveis a cada string dessa linha
  43.         if intensidade < intensidade_min && (cordx ~= 0 || cordy ~=0)
  44.             intensidade_min = intensidade;
  45.             cordx_min = cordx;
  46.             cordy_min = cordy;
  47.             col1_min = col1;
  48.             col2_min= col2;
  49.         end
  50.     end
  51.    
  52.    
  53.     result1 = fclose(fid);
  54.     if result1 ~= 0
  55.         fprintf('Erro no fecho\n')
  56.     end
  57.     %calcula distancia e pf
  58.     %apresenta-as no ecra
  59.     dist = sqrt((cordx_min^2)+(cordy_min^2));
  60.     fp = 1000/(200*dist+intensidade_min);
  61.     fprintf('\nDistância no plano = %.2f m\n',dist)
  62.     fprintf('Factor de prioridade = %.6f\n', fp)
  63.    
  64.    
  65.     %apresenta a imagem da matriz intensidade
  66.     image(C,'CDataMapping','scaled');
  67.     colormap('gray');
  68.     title ('Imagem');
  69.     legenda = sprintf('Distância no plano = %.2f m',dist);
  70.     xlabel (legenda);  
  71.     hold all
  72.     line([128 col2_min],[248 col1_min]);
  73.     plot(col2_min,col1_min,'o');
  74.     %atribui a saida missoes_novo a uma struct que contem os campos
  75.     %analisados nesta opçao
  76.     missoes_novo = struct('distancia', dist, 'intensidade_min',intensidade_min, 'factor_prioridade', fp,'nome_ficheiro', nome_ficheiro);
  77. end