Ir para conteúdo
Fórum Script Brasil
  • 0

Matlab.


andrecarvalho

Pergunta

Pessoal bom dia.

Estou tentando desenvolver uma série de respostas, porém as respostas tem que seguir as seguintes condições:

Distância = 100:infinito

Azimute = 0°0'1":89°59'59"

Tempo = 1 segundo

Eu quero que o matlab, a partir de uma equação, me informe quais são os valores de distância e azimute, quando o tempo seja 1 segundo.

Não estou conseguindo inserir o script correto, vocês podem me ajudar? Apenas me informando quais são os comandos que utilizo?

Li o material disponível em http://ensino.univates.br/~chaet/Materiais/CURSOmatlab52.pdf porém não me ajudou muito, ou eu não estou sabendo como incluir.

Obrigado.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Jhonas, obrigado.

Mas não era isso não, eu consegui fazer com que ele mostre em forma de matriz, porém não está saindo adequadamente. É para ele calcular para azimute = 1 segundo, distância variando, até achar o tempo em 1 segundo também.

Algo que vai ficar assim:

Tempo = 1 seg, 1 seg, 1 seg, 1 seg, 1 seg, 1 seg, 1 seg, 1 seg...

Azimute = 1 seg, 2 seg, 3 seg, 4 seg, 5 seg, ... 89horas 59min 59seg.

Distância = Sempre variando, até achar o tempo = 1 segundo.

Fiz isso, porém ele fixa a distância a 100m, sendo que a distância é para variar, espero que tenha entendido, obrigado.

clear
clc 
format long g
% Parâmetros
a=6378137
alfa=1/298.257222101
e2=2*alfa-alfa^2 % primeira excentricidade ao quadrado
e=sqrt(e2) %primeira excentricidade
fi=(-8.031089*pi)/180
N=a/1-(e^2)*(sin(fi)^2)^0.5 % grande normal
% CALCULO DO ANGULO DE UMA SEÇÃO NORMAL
disp('Parametros para o calculo de teta')
%Az_ini=(0.00027777777*pi)/180;
%Az_fim=(89.9997222*pi)/180;
%Az_ini=0;
%Az_fim=2;
for teta=1, % 323999
Az=(0.00027777777*pi)/180;
s=0; 
i=0;
while teta~=2, 
s=100+s;
Az=Az+((0.00027777777*pi)/180);
i=i+1;
teta1=((e^2)*(s^2))/4*(N^2)*0.00000484813;
teta2=(cos(fi)^2)*(sin(Az)*2)-(s*(sin(fi)*2)*(sin(Az)))/(2*N);
teta=teta1*teta2;
RESULT(i,1)=i;
RESULT(i,2)=Az;
RESULT(i,3)=s; 
RESULT(i,4)=teta>1;
    if i==500000,
       RESULT
    break, 
    end
end
end

Link para o comentário
Compartilhar em outros sites

  • 0

Eu não tenho como testar o seu código aqui, mas pela lógica... veja

se voce quer começar o s = 100 e ir incrementando

s=2; 
i=0;
while teta~=2, 
s=100+s;
então a cada execução do while teremos o valor de s alterado 100, 102, 104, 106, 108 , 110 .... etc se voce quer começar o s = 0 e ir e incrementando
s=0; 
i=0;
while teta~=2, 
s=s+2;

então a cada execução do while teremos o valor de s alterado

2, 4, 6, 8, 10, 12 ... etc

OBS: faça algumas mudanças e veja o que ocorre

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...