Jump to content
Fórum Script Brasil
  • 0

Matlab.


andrecarvalho

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...