Como fazer um sistema de equivalencia
Galera, estou com um pequeno problema que gostaria de compartilhar e ver se consigo uma idéia ou solução. vamos ao problema, tenho uma medida de 70 cm, esta é minha referencia métrica, montei um dispositivo que recebe 2 informações onde seus pontos máximos seria os extremos da medida um em 0 e outro em 70, vamos supor que tenho uma leitura idêntica em ambos dispositivos, isso significa que a leitura é exatamente no centro da régua, ou seja 35,cm, outra hipótese, se um dos dispositivos receber mais leitura que o outro indicaria uma aproximação ao inicio ou no final, e isso teria que ser convertido em centímetros. sóa para entendimento, no programa que vai fazer a leitura destes dados no primeiro exemplo seria 0 e 0 para retornar 35 cm e no segundo exemplo seria -6 e -12 para retornar 50cm ou -12 e -6 para retornar 20cm ..se alguém puder ajudar neste racicocinio agradeceria demais mesmo...vlw
Gilmar Moraes
Curtidas 0
Respostas
Gilmar Moraes
02/06/2014
[img]http://arquivo.devmedia.com.br/forum/imagem/301124-20140603-000036.jpg[/img]
Esta seria a idéia de como ficaria..o programa teria que tirar a média das amostras e associar isso a um sistema de medida..
Esta seria a idéia de como ficaria..o programa teria que tirar a média das amostras e associar isso a um sistema de medida..
GOSTEI 0
Paulo Freire
02/06/2014
Bom Gigatel, eu tenho um .pas que fiz a muito tempo e que uma grande vidraçaria usa para corte em vidros temperados, cortes especiais de box e etc, seria o mesmo raciocínio ?
GOSTEI 0
Gilmar Moraes
02/06/2014
Bom Gigatel, eu tenho um .pas que fiz a muito tempo e que uma grande vidraçaria usa para corte em vidros temperados, cortes especiais de box e etc, seria o mesmo raciocínio ?
amigo, deixa explicar o que estou tentando fazer, sou estudante de eng. elétrica e fizemos um aparelho que simula descargas atmosférica, igual uma bobina de tesla, más em tempos regulados, estou usando 2 microfones eletreto para registrar gravações de queda, com são dois canais independentes tenho capturas de Decibéis onde um canal pegará menos que o outro me informando onde ocorreu a descarga..por isso fiz aquele gráfico. vlw
GOSTEI 0
Marco Salles
02/06/2014
Porque que
A1 = 20 e B3=60 o resultado tem que dar 50 ??? não seria 40 ???
Porque que
A3 = 0 e B1 = 40 o resultado tem que dar 10 ??? Não seria 20 ???
A1 = 20 e B3=60 o resultado tem que dar 50 ??? não seria 40 ???
Porque que
A3 = 0 e B1 = 40 o resultado tem que dar 10 ??? Não seria 20 ???
GOSTEI 0
Cauê Nishijima
02/06/2014
Vê se essa função te ajuda:
function equivalencia(val1, val2: string): Integer;
var
letra: string;
numero, eqA, eqB: Integer;
begin
letra := Copy(val1, 1, 1);
numero := StrToInt(Copy(val1, 2, length(val1)));
if letra = 'A' then
begin
eqA := 30 - (10 * numero);
end;
letra := Copy(val2, 1, 1);
numero := StrToInt(Copy(val2, 2, length(val1)));
if letra = 'B' then
begin
eqB := 30 + (10 * numero);
end;
Result := Trunc((eqA + eqB) / 2);
end;
GOSTEI 0
Gilmar Moraes
02/06/2014
Porque que
A1 = 20 e B3=60 o resultado tem que dar 50 ??? não seria 40 ???
Porque que
A3 = 0 e B1 = 40 o resultado tem que dar 10 ??? Não seria 20 ???
A1 = 20 e B3=60 o resultado tem que dar 50 ??? não seria 40 ???
Porque que
A3 = 0 e B1 = 40 o resultado tem que dar 10 ??? Não seria 20 ???
Obrigado por responder, para quebrar o galho estou fazendo uma média dos dois valores como vc sugere, más entendo que os dois pontos estão fixos e estes valores não pode ser tratados como media, pois valores diferentes podem dar medias iguais, pense o seguinte o range não pode mudar por que a intensidade da captura sempre terá dois pontos fixos é como se eu colasse estes valores em uma regua por exemplo e se um ponto de valor mudasse o outro mudaria proporcionalmente..vou postar uma foto..
GOSTEI 0
Gilmar Moraes
02/06/2014
Este é o projeto que fizemos, é para dá uma ideia de como funciona.
GOSTEI 0
Gilmar Moraes
02/06/2014
Este é o projeto que fizemos, é para dá uma ideia de como funciona.
estranho a foto não está aparecendo..rsrsrs
GOSTEI 0
Gilmar Moraes
02/06/2014
Vê se essa função te ajuda:
function equivalencia(val1, val2: string): Integer;
var
letra: string;
numero, eqA, eqB: Integer;
begin
letra := Copy(val1, 1, 1);
numero := StrToInt(Copy(val1, 2, length(val1)));
if letra = 'A' then
begin
eqA := 30 - (10 * numero);
end;
letra := Copy(val2, 1, 1);
numero := StrToInt(Copy(val2, 2, length(val1)));
if letra = 'B' then
begin
eqB := 30 + (10 * numero);
end;
Result := Trunc((eqA + eqB) / 2);
end;
Obrigado por responder, más não precisa usar letras só usei como referencia..será usado dois valores que este definirá um ponto métrico válido, será analisado duas amostras de um mesmo registro, isso será feito por microfones e o registros será um descarga elétrica, o microfone deve captura onde ocorreu, onde um terá um captura maior e o outro menor, e estes 2 valores devem corresponder a um ponto de uma régua..informado então a origem estimada da descarga.
GOSTEI 0
Gilmar Moraes
02/06/2014
Vê se essa função te ajuda:
function equivalencia(val1, val2: string): Integer;
var
letra: string;
numero, eqA, eqB: Integer;
begin
letra := Copy(val1, 1, 1);
numero := StrToInt(Copy(val1, 2, length(val1)));
if letra = 'A' then
begin
eqA := 30 - (10 * numero);
end;
letra := Copy(val2, 1, 1);
numero := StrToInt(Copy(val2, 2, length(val1)));
if letra = 'B' then
begin
eqB := 30 + (10 * numero);
end;
Result := Trunc((eqA + eqB) / 2);
end;
Obrigado por responder, más não precisa usar letras só usei como referencia..será usado dois valores que este definirá um ponto métrico válido, será analisado duas amostras de um mesmo registro, isso será feito por microfones e o registros será um descarga elétrica, o microfone deve captura onde ocorreu, onde um terá um captura maior e o outro menor, e estes 2 valores devem corresponder a um ponto de uma régua..informado então a origem estimada da descarga.
GOSTEI 0
Valquiria Silva
02/06/2014
Olá Gigatel, talvez seja interessante criar dois vetores inteiros
Dispositivo A []
Dispositivo B []
então grave os valores capturados na posição correspondente dos vetores.
E depois faça as conversões.
Espero ter ajudado e não ter falado besteira rsrsrs.
Dispositivo A []
Dispositivo B []
então grave os valores capturados na posição correspondente dos vetores.
E depois faça as conversões.
Espero ter ajudado e não ter falado besteira rsrsrs.
GOSTEI 0
Marco Salles
02/06/2014
Amigo Gigatel , existem vários tipos de média ( Aritmética , geométrica ,Ponderada etc... )
Eu não defini que o ideal fosse a Média Aritmética , apenas comparei com os resultados que vc apresentou que sugerem ser esta a média utilizada por VC mesmo
Seria bom uma figura e mais detalhes ,
[]sds
Eu não defini que o ideal fosse a Média Aritmética , apenas comparei com os resultados que vc apresentou que sugerem ser esta a média utilizada por VC mesmo
Seria bom uma figura e mais detalhes ,
[]sds
GOSTEI 0
Gilmar Moraes
02/06/2014
[img:descricao=Projeto]http://arquivo.devmedia.com.br/forum/imagem/301124-20140609-132532.png[/img]
Imagine agora uma régua de 80cm por baixo do aluminio que indica ponto a e b, acho que agora ficará mais claro.
Imagine agora uma régua de 80cm por baixo do aluminio que indica ponto a e b, acho que agora ficará mais claro.
GOSTEI 0
Gilmar Moraes
02/06/2014
Olá Gigatel, talvez seja interessante criar dois vetores inteiros
Dispositivo A []
Dispositivo B []
então grave os valores capturados na posição correspondente dos vetores.
E depois faça as conversões.
Espero ter ajudado e não ter falado besteira rsrsrs.
Dispositivo A []
Dispositivo B []
então grave os valores capturados na posição correspondente dos vetores.
E depois faça as conversões.
Espero ter ajudado e não ter falado besteira rsrsrs.
Obrigado por responder, então só preciso mesmo arrumar um jeito de converter pois os dados de entrada é visualizado e depois os valores são inseridos manualmente..se existisse um plugin ou uma função que pegasse os picos máximos de uma fonte de áudio não precisaria inserir manualmente..atualmente faço a captura no sound forge e coloco os valores manualmente, como mostrado na foto.
[img]http://arquivo.devmedia.com.br/forum/imagem/301124-20140609-133856.png[/img]
GOSTEI 0
Cauê Nishijima
02/06/2014
Cara deu pra entender um pouco melhor, mas ainda continua sem entender como você chegou nos resultados do primeiro exemplo seu:
segundo exemplo seria -6 e -12 para retornar 50cm ou -12 e -6 para retornar 20cm
Tentei aplicar o raciocínio da sua segunda explicação mas não consegui chegar nos resultados!
segundo exemplo seria -6 e -12 para retornar 50cm ou -12 e -6 para retornar 20cm
Tentei aplicar o raciocínio da sua segunda explicação mas não consegui chegar nos resultados!
GOSTEI 0
Gilmar Moraes
02/06/2014
Cara deu pra entender um pouco melhor, mas ainda continua sem entender como você chegou nos resultados do primeiro exemplo seu:
segundo exemplo seria -6 e -12 para retornar 50cm ou -12 e -6 para retornar 20cm
Tentei aplicar o raciocínio da sua segunda explicação mas não consegui chegar nos resultados!
segundo exemplo seria -6 e -12 para retornar 50cm ou -12 e -6 para retornar 20cm
Tentei aplicar o raciocínio da sua segunda explicação mas não consegui chegar nos resultados!
Acho que agora vai dá certinho..rsrs
[img]http://arquivo.devmedia.com.br/forum/imagem/301124-20140609-134832.jpg[/img]
GOSTEI 0
Gilmar Moraes
02/06/2014
Cara deu pra entender um pouco melhor, mas ainda continua sem entender como você chegou nos resultados do primeiro exemplo seu:
segundo exemplo seria -6 e -12 para retornar 50cm ou -12 e -6 para retornar 20cm
Tentei aplicar o raciocínio da sua segunda explicação mas não consegui chegar nos resultados!
segundo exemplo seria -6 e -12 para retornar 50cm ou -12 e -6 para retornar 20cm
Tentei aplicar o raciocínio da sua segunda explicação mas não consegui chegar nos resultados!
Acho que agora vai dá certinho..rsrs
[img]http://arquivo.devmedia.com.br/forum/imagem/301124-20140609-134832.jpg[/img]
Aliás 3cm não, são 3 casas mesmo aí com isso chego ao valor em centímetros.. más como podem notar os valeres no exemplo estão em inteiros más só para exemplo o valor pode ocorrer fracionados tbm..
GOSTEI 0
Cauê Nishijima
02/06/2014
Acho que agora minha função esta funcionando como você precisa, fiz uns testes e consegui chegar nos valores no seu primeiro exemplo:
function equivalencia(valorReferencia, val1, val2: integer): integer;
var
eqA, eqB: integer;
begin
if val1 > 0 then
eqA := Trunc((valorReferencia / 2) - (val1 * 5))
else
eqA := Trunc((valorReferencia / 2) + (val1 * 5));
if val2 > 0 then
eqB := Trunc((valorReferencia / 2) + (val2 * 5))
else
eqB := Trunc((valorReferencia / 2) - (val2 * 5));
Result := Trunc((eqA + eqB) / 2);
end;
Você passa medida da régua, 70cm, 60cm, 80cm
Você passa medida da régua, 70cm, 60cm, 80cm
massa demais cara..vlw..já estou fazendo os testes aqui..bom no relatório que estou fazendo tenho que citar as referencia e ajudas que tive posso te citar ou posso citar o forum como ajudas no programa ?
function equivalencia(valorReferencia, val1, val2: integer): integer;
var
eqA, eqB: integer;
begin
if val1 > 0 then
eqA := Trunc((valorReferencia / 2) - (val1 * 5))
else
eqA := Trunc((valorReferencia / 2) + (val1 * 5));
if val2 > 0 then
eqB := Trunc((valorReferencia / 2) + (val2 * 5))
else
eqB := Trunc((valorReferencia / 2) - (val2 * 5));
Result := Trunc((eqA + eqB) / 2);
end;
GOSTEI 0
Gilmar Moraes
02/06/2014
Acho que agora minha função esta funcionando como você precisa, fiz uns testes e consegui chegar nos valores no seu primeiro exemplo:
function equivalencia(valorReferencia, val1, val2: integer): integer;
var
eqA, eqB: integer;
begin
if val1 > 0 then
eqA := Trunc((valorReferencia / 2) - (val1 * 5))
else
eqA := Trunc((valorReferencia / 2) + (val1 * 5));
if val2 > 0 then
eqB := Trunc((valorReferencia / 2) + (val2 * 5))
else
eqB := Trunc((valorReferencia / 2) - (val2 * 5));
Result := Trunc((eqA + eqB) / 2);
end;
Vou testa-la aki..e vejo se deu certo.
function equivalencia(valorReferencia, val1, val2: integer): integer;
var
eqA, eqB: integer;
begin
if val1 > 0 then
eqA := Trunc((valorReferencia / 2) - (val1 * 5))
else
eqA := Trunc((valorReferencia / 2) + (val1 * 5));
if val2 > 0 then
eqB := Trunc((valorReferencia / 2) + (val2 * 5))
else
eqB := Trunc((valorReferencia / 2) - (val2 * 5));
Result := Trunc((eqA + eqB) / 2);
end;
Vou testa-la aki..e vejo se deu certo.
GOSTEI 0
Gilmar Moraes
02/06/2014
Acho que agora minha função esta funcionando como você precisa, fiz uns testes e consegui chegar nos valores no seu primeiro exemplo:
function equivalencia(valorReferencia, val1, val2: integer): integer;
var
eqA, eqB: integer;
begin
if val1 > 0 then
eqA := Trunc((valorReferencia / 2) - (val1 * 5))
else
eqA := Trunc((valorReferencia / 2) + (val1 * 5));
if val2 > 0 then
eqB := Trunc((valorReferencia / 2) + (val2 * 5))
else
eqB := Trunc((valorReferencia / 2) - (val2 * 5));
Result := Trunc((eqA + eqB) / 2);
end;
Vou testa-la aki..e vejo se deu certo.
este valorReferencia seria o que na função ?
function equivalencia(valorReferencia, val1, val2: integer): integer;
var
eqA, eqB: integer;
begin
if val1 > 0 then
eqA := Trunc((valorReferencia / 2) - (val1 * 5))
else
eqA := Trunc((valorReferencia / 2) + (val1 * 5));
if val2 > 0 then
eqB := Trunc((valorReferencia / 2) + (val2 * 5))
else
eqB := Trunc((valorReferencia / 2) - (val2 * 5));
Result := Trunc((eqA + eqB) / 2);
end;
Vou testa-la aki..e vejo se deu certo.
este valorReferencia seria o que na função ?
GOSTEI 0
Cauê Nishijima
02/06/2014
tenho uma medida de 70 cm, esta é minha referencia métrica
Você passa medida da régua, 70cm, 60cm, 80cm
GOSTEI 0
Gilmar Moraes
02/06/2014
tenho uma medida de 70 cm, esta é minha referencia métrica
Você passa medida da régua, 70cm, 60cm, 80cm
massa demais cara..vlw..já estou fazendo os testes aqui..bom no relatório que estou fazendo tenho que citar as referencia e ajudas que tive posso te citar ou posso citar o forum como ajudas no programa ?
GOSTEI 0
Cauê Nishijima
02/06/2014
Opa, que bom Gigatel, pode citar sim, sem problemas!!!
Qualquer coisa se precisar de mais alguma adaptação ou não estiver 100% da um toque que a gente vai refatorando!!!
Qualquer coisa se precisar de mais alguma adaptação ou não estiver 100% da um toque que a gente vai refatorando!!!
GOSTEI 0