Mostrando postagens com marcador processamento de sinais. Mostrar todas as postagens
Mostrando postagens com marcador processamento de sinais. Mostrar todas as postagens

quinta-feira, 22 de agosto de 2013

Quadricópteros prometem substituir carteiros e motoboys

Quadricópteros prometem substituir carteiros e motoboys: Pilotado por um smartphone, o veículo robótico dispensa a conexão via rádio a um computador externo.

Ao usar um computador de bordo (no caso, o smartphone), o quadricóptero torna-se autônomo e capaz de desenvolver atividades complexas, como definir rotas e desviar de obstáculos, valendo-se para isso do poder de processamento agregado.

Inovações desta natureza trazem consigo modificações na sociedade, pois assim é possível tirar profissionais de suas atividades, o que gera dois possíveis cenários: revolta ou evolução.

Desde a revolução industrial muitas pessoas questionam o impacto social de substituir o trabalho braçal de pessoas por máquinas especializadas. Particularmente, sou favorável a esta mudança desde que ocorra de forma gradual e que os antigos profissionais de trabalho braçal sejam capacitados a desenvolver outro tipo de trabalho, agora intelectual.

É comum ver como países têm défict de profissionais capacitados enquanto muitas pessoas estão desempregadas ou desempenhando trabalhos puramente físicos acomodam-se nestas situações por não precisarem crescer intelectualmente, estudando e se capacitando.

Vejo que os revoltados escondem o desejo de acomodação, mas também não é justo que profissionais percam seus empregos sem terem a possibilidade de se alocarem em outros cargos.

sexta-feira, 8 de março de 2013

Softwares gratuitos de análise estatística

Hoje vi este site: http://www.analyticbridge.com/forum/topics/list-of-free-statistical e achei que seria muito interessante difundir todo o trabalho desenvolvido para a elaboração de softwares estatísticos gratuitos.

Segue a lista de softwares em ordem alfabética.

A
ADaMsoft - Data mining, data management and reporting. Has web based features.
Ade4 - It contains Data Analysis functions to analyse Ecological and Environmental data in the framework of Euclidean Exploratory methods, hence the name ade4.
ADePT - Developed to automate and standardize the production of analytical reports.
ADMB - Non-linear statistical modelling.
AM  General stats package.
AnSWR - A software system for coordinating and conducting large-scale, team-based analysis projects that integrate qualitative and quantitative techniques.
Apophenia - General stats package but with more flexibility to be creative in model building.
Arc - Applied regression including computing and graphics.
Assistat - General stats package.

B
Bayesian Filtering Library - Bayesian software for use in advanced machine and robot control.
BiNGO - Bioinformatics software. Biological Network Gene Ontology.
BioEstat - Ecological statistics program (only available in Portuguese).
Biogeme - Stands for: Bierlaire's Optimization Toolbox for GEV (Generalized Extreme Value) Model Estimation.
Biomapper - A GIS-toolkit to model ecological niche and habitat suitability.
BKD - Bayesian Knowledge Discoverer
BlockTreat - A general frequentist Monte Carlo program for block and treatment tests, tests with matching, k-sample tests, and tests for independence.
BrightStat - General stats package.
BV4.1 - A procedure for the decomposition and seasonal adjustment of monthly and quarterly economic series. Used by the German Federal Statistical Office.

C
Calcugator - Calculator, plotting engine, and programming environment.
Caleydo - Bioinformatics data visualisation software.
CCOUNT - Designed for market research purposes, including: data cleaning, manipulation, cross tabulation and data analysis. Similar to SPSS.
CDC EZ-Text - Developed to assist researchers create, manage, and analyze semi-structured qualitative databases.
Chronux - Developed for the analysis of neural data.
Conc - Text concordance program.
Concorder - Text concordance program. Allows you to take given texts and find out the frequency of words.
Correlate -
CSPro - Census and Survey Processing System (CSPro) is a questionnaire-oriented statistical package for Windows.
Cytoscape - Bioinformatics software platform for visualizing molecular interaction networks and integrating these interactions with gene expression profiles and other state data.

D
DAP - Alternative to SAS.
Dataplot - General stats package. Designed for science and engineering.
DAVID - Bioinformatics software. Database for Annotation, Visualization and Integrated Discovery.
dChip - Bioinformatics software. dChip Software: Analysis and visualization of gene expression and SNP microarrays
Demetra - Time series package.
Dia - Diagram drawing program. Allows the drawing of entity relationship diagrams, UML diagrams, flowcharts, network diagrams, and many others.
Draco - Econometrics package with spreadsheets.

E
EASE - Bioinformatics software. Expression Analysis Systematic Explorer.
EasyReg Int. - Econometrics package.
EasySample - Simple sampling program.
EDGAR - Experimental design programs.
ELKI - Environment for developing KDD-applications supported by index-structures. Compares data mining algorithms.
EMMIX - Fortran software to fit mixture models.
Epi Info - Designed for epidemiologists and other public health and medical professionals.
Epidata - Epidemiology package.
EqPlot - Equation graph plotter.
ErmineJ - Bioinformatics software. Performs analyses of gene sets in expression microarray data or other genome-wide data that results in rankings of genes.
ESA - Event Structure Analysis (ESA) is an on-line Java program that helps you analyze sequential events.
ESS - Emacs Speaks Statistics. Add-on package for emacs text editors.
Esta+ - General (and simple) stats package.
Euler - Similar to Matlab.
EVE - Embedded Vector Editor. Vector graphics program.
Excellent Analytics - Excel plug-in that lets you import web analytics data from Google Analytics into a spreadsheet.
EzANOVA - Simple ANOVA program.

F
Factor - Simple factor analysis program.
Firebird - Relational database management system (RDBMS).
Fityk - Nonlinear least squares curve fitting.
Freemat - Similar to Matlab and IDL.

G
G Power - Power and sample size calculator.
G7 - Econometrics package. Allows the building and useage of data banks.
GATE - Text mining program. General Architecture for Text Engineering.
Gemma - Bioinformatics software. Database and software system for the meta-analysis of gene expression data.
GEMS - Bioinformatics software (online forms). Gene Expression Module Sampler.
GenePattern -Bioinformatics software. Genomic analysis platform that provides access to more than 125 tools for gene expression analysis, proteomics, SNP analysis and more.
GenMAPP - Bioinformatics software. Designed to visualize gene expression and other genomic data on maps representing biological pathways and groupings of genes.
GeoDa - Geospatial analysis and computation.
GGobi - Data visualisation.
Gist - Bioinformatics software. Contains software tools for support vector machine classification and for kernel principal components analysis.
Gnumeric - Spreadsheet program.
Gnuplot - Command driven graphing program.
GoMiner - Bioinformatics software. A tool for biological interpretation of 'omic' data, including data from gene expression microarrays.
Gostat - Bioinformatics software (online forms). Find statistically overrepresented Gene-Ontology (GO) terms within a group of genes.
Gretl - Stands for Gnu regression, econometrics and time-series library. Alternative to EViews. REVIEWED!!!
Grocer - An econometric toolbox for Scilab.
GUIDE - Multi-purpose machine learning algorithm for constructing classification and regression trees.

H
HLM - Hierarchical linear and nonlinear modelling.

I
IHMC CmapTools - Concept mapping program.
Instats - General stats package.
Interactive Statistical Unit -
Inverse Symbolic Calculator - An online form where the output is a list of possible sources for the number you enter (such as simple equations or well known constants).
IRRIStat - General stats package. Designed for analysis of agricultural field trials data.
IVEware - Imputation and Variance Estimation.

J
JAGS - Stands for just another Gibbs sampler. Bayesian hierarchical models using Markov Chain Monte Carlo (MCMC).
jHepWork - Mathematics and statistics package.
JMulTi - Time series and econometrics package.

K
Kyplot - Graphs program.

L
Lisp-stat - General stats package with emphasis on graphics.
LISREL - Originally limited to structural equation modelling (SEM) but now has other functions.

M
MacAnova - General stats package.
MacSHAPA - Macintosh-based software environment that supports observational data analysis, including the analysis of video.
Matrixer - Econometrics package.
Matrix2png - Bioinformatics software. A simple program for making visualizations of microarray data and many other data types.
Matvec - Current capabilities range from matrix and vector manipulation to the analysis of linear and generalized linear mixed models.
Maxima - A computer algebra system. Mathematics program.
MicroConcord - Text concordance program.
MicrOsiris - Statistical and data management package.
Ministep - Constructs Rasch measures from simple rectangular data sets.
MINUIT - Physics analysis tool for function minimization.
Mondrian - Data visualisation.
MorePower - Statistical power calculator for hypothesis tests.
Mx - Matrix algebra interpreter and numerical optimizer for structural equation modelling and other types of statistical modelling of data.
MYSTAT - Free SYSTAT version for students.

N
NLTK - Text mining program. Natural Language Toolkit.
NORM - Multiple imputation of multivariate continuous data under a normal model.

O
Octave - Similar to Matlab.
Onto-Tools - Bioinformatics programs. Onto-Express, Onto-Compare, Onto-Design, Onto-Translate, Onto-Miner, Pathway-Express, Promoter-Express, nsSNPCounter, OE2GO, KUTE-BASE.
OpenBUGS - Bayesian inference using Gibbs sampling.
Open Code - A tool for coding qualitative data generated from text information such as interviews, observations or field notes.
OpenEpi - Epidemiology package.
OpenOffice - Open source alternative to Microsoft Office. Includes Calc, an alternative to Excel.
Openstat - General stats package.
Orange - Data mining through visual programming or Python scripting. Extensions for bioinformatics and text mining.

P
PAM -
PAMCOMP - Person-years And Mortality COMputation Program.
PAST - Statistics program for palaeontology.
PCP - Pattern Classification Program.
PINT - Power analysis IN Two-level designs (for determination of standard errors and optimal sample sizes in multilevel designs with 2 levels).
Ploticus - Graphs program.
PopTools - Population modelling program.
POSDEM - A program to choose between sampling plans based on the population frame.
PostgreSQL - Relational database management system (RDBMS).
PQRS - Stands for probabilities, quantiles and random samples.
Program Mark - Ecological statistics program. Advanced mark-recapture modelling.
PS - Power and sample size calculator.
PSPP - Alternative to SPSS.

Q
QCA - Qualitative Comparative Analysis is a special-purpose program designed to analyze quantified data from multiple cases.
QPL - Questionnaire Programming Language.
Quail - Quantitative analysis in Lisp.

R
R - Widely used alternative to SPlus.
R Commander - GUI interface for R.
RapidMiner - Data mining.
Red R - Visual programming interface for R.
Regress+ - Mathematical modelling for the Macintosh.
RMAexpress - Bioinformatics software. A standalone GUI program to compute gene expression summary values for Affymetrix Genechip data.
Rosetta - A rough set toolkit for data analysis / data mining.
Rule Discovery System - Data mining program.
Rundom Pro - General stats package with emphasis on resampling procedures.
Rweb - An online form that processes R commands.

S
|STAT - General stats package.
Sage - Mathematics software.
SalStat - General stats package designed for the analysis of science and psychology data.
SAM - Bioinformatics software. Sequence Alignment and Modeling System.
Scilab - Numerical computation.
Shogun - A large scale machine learning toolbox.
Simfit - Simulation, curve fitting, statistics, and plotting.
Simplex Method Tool - An online form that solves linear programming problems.
SimulME - A Java ME (J2ME) application with queuing calculator, Monte Carlo simulation and more. Compatible with Sony-Ericsson, Samsung, Motorola and other cell phones.
SL Gallery - Statistical distribution graphs and calculations.
SOCR - Stands for statistics online computational resource. General stats package.
SOFA Statistics - Statistics, analysis and reporting program.
Software for Permutation Methods: A Distance Function Approach
Sonar - Survey administration and data collection system.
SpreadCE - Spreadsheet program.
SSP (Smith's Statistical Package) - General stats package.
StatCalc - A Calculator that computes table values of 34 statistical distributions. It also computes moments, and many other statistics.
StatEasy - General stats package.
Statext - Statistics expressed in text (even the graphs).
Statibot - An interactive www-based expert system for basic statistical analysis.
Statist - General stats package.
Statistical Lab - R based general stats package.
Statistics 101 - Simulations / resampling methods.
STATPerl - General stats package based on Perl.
Stattucino - Web spreadsheets with data analysis functions.

T
TAMS - Text mining program. Text Analysis Mark-up System. Identifies themes in texts.
Tanagra - Data mining.
TELPACK - Teletraffic Analysis Package.
Tetrad - Search algorithms and statistical modelling.
TextStat - Text concordance program. A program for the analysis of texts.
TimesLab - Time series analysis program.
TMeV - Bioinformatics software. Normalized and filtered expression files can be analyzed using TIGR Multiexperiment Viewer (MeV).
TSW - Time series and econometrics package.
TWOMOK - Non-parametric scale analysis for two-level data (ecometrics).

U
UIMA - Text mining program. Unstructured Information Management Architecture.
Ultrafind - Text concordance program. Extremely fast text search.

V
VARBRUL - Designed to facilitate analysis of linguistic variables and social variables.
VisiCube - Data visualisation tool.
ViSta - Visual statistics system with work maps, guide maps and interactive graphics.
VStar - Data visualisation and analysis tool for astronomy.

W
Weft QDA - A tool to assist in the analysis of textual data such as interview transcripts, written texts and field notes.
Weka - Machine learning software written at the University of Waikato.
WinBUGS - Bayesian analysis using Markov chain Monte Carlo methods.
WinIDAMS - General stats package.
Winpepi - Epidemiology package.
WordNet - A large lexical database of English.

X
X-12-ARIMA - Seasonal adjustment software produced, distributed, and maintained by the US Census Bureau.
XDAT - Visualization and analysis of multidimensional data.
XL Statistics - A set of Microsoft Excel (ver 97+) workbooks for statistical analysis of data.
XL Toolbox - Data analysis add-on for Excel.
Xnumbers - Multi precision floating point computing and numerical methods for Excel.
XploRe - Interactive statistical methods and data exploration.
Xpro - Exact parametric inference.
Xtremes - Graphics and analysis program for extreme values.

Y
Yxilon - Statistical programming language.

Z
Zaitun Time Series - Time series software. Has the capability to deal with stock market data.
Zelig - Based on R. Automates various processes.

A fonte original, com os links de cada software está aqui: http://l-lists.com/en/lists/dz3a5t.html

segunda-feira, 4 de fevereiro de 2013

Solução de mistério biológico impulsiona inteligência artificial

Como já deve ser de conhecimento, uma das áreas de conhecimento que mais me interessam é inteligência computacional, principalmente devido às possibilidades de aplicações em análise de dados e reconhecimento de padrões.

Uma das categorias mais conhecidas de algoritmos de reconhecimento de padrões são as redes neurais artificais (ver http://multisign.blogspot.com.br/search/label/redes%20neurais e http://multisign.blogspot.com.br/search/label/ica para mais informações) que consistem de modelos computacionais de estruturas neurais biológicas desenvolvidos para resolver um problema específico.

Por se tratarem de modelos baseados em sistemas biológicos, a evolução das redes neurais é dependente das novas descobertas em neurologia e biologia, como a apresentada a seguir.

Solução de mistério biológico impulsiona inteligência artificial: Uma descoberta associada à biologia e à teoria da evolução deverá ter um impacto direto nos algoritmos de inteligência artificial.

quarta-feira, 14 de novembro de 2012

Análise de dados com Pentaho

Esta semana eu conheci o Pentaho, um pacote de software, com uma versão livre e outra enterprise, completo para análise de dados.

O objetivo de sistemas como o Pentaho é fornecer toda a infraestrutura de software para armazenamento, cruzamento, filtragem, análise e processamento (matemático e estatístico) e visualização de dados com a finalidade de suportar tomadas de decisão por parte de gestores.

Os principais benefícios deste tipo de sistema é a capacidade de identificação de padrões e tendências em bases de dados e a possibilidade de se fazer predições fundamentadas nos dados já armazenados, como previsão de demandas, de crescimento, de lucro, de risco, etc... além de permitir também a identificação de padrões como perfis de clientes/usuários, padrões de comportamento (humano ou de um ambiente), potencial de fraude em processos ou transações, etc....

Já escrevi alguns posts sobre as técnicas de análise estatística utilizadas neste tipo de sistema:
Mas sei que os textos contidos neste blog sobre esse assunto deixam muito a desejar.

Assim, acho que vale citar dois artigos no portal IBM DeveloperWorks acerca de análise de dados, porém utilizando o software de análise estatística SPSS Modeler:


terça-feira, 16 de outubro de 2012

PlanetHunters.org - Caçadores de Planetas

Hoje conheci este site: http://www.planethunters.org/

Trata-se de um sistema de visualização de dados provenientes do telescópio espacial Kepler, mantido pela Universidade de Yale - Estados Unidos, onde qualquer usuário pode procurar por padrões em busca de novos planetas, estrelas ou outros corpos celestes.

A mais nova descoberta da astronomia é o planeta PH1 (o nome PH foi dado em homenagem ao site PlanetHunters), em que astrônomos amadores descobriram um planeta com quatro "sóis", leia mais aqui e aqui.

Projetos como este, que democratizam o conhecimento e o acesso à ciência promovem o estímo à pesquisa e têm o potencial de despertar o interesse científico em pessoas que de outra forma continuariam alheias às suas próprias capacidades.

segunda-feira, 1 de outubro de 2012

Pulsos superluminais ludibriam física para viajar mais rápido que a luz

Pulsos superluminais ludibriam física para viajar mais rápido que a luz: Embora, em certo sentido, esses pulsos de luz viajem mais rapidamente do que a velocidade da luz, o feito não afeta em nada a Teoria da Relatividade.

A luz é uma entidade física, enquanto que a informação é um conceito abstrato. Fica a dica para compreender porque a informação contida na luz pode chegar antes em um destino que outro feixe de luz enviado ao mesmo tempo.

Neste caso, pelo que eu entendi, a informação precisa ser conhecida para ser "adiantada no tempo", o que pode ter aplicações em sincronização de pulsos, mas não na transmissão de dados em si.

terça-feira, 28 de agosto de 2012

Estruturas multi dimensionais

Faz alguns anos, eu escrevi um texto no portal Unidev sobre "matrizes com mais de duas dimensões": http://www.unidev.com.br/phpbb3/viewtopic.php?f=21&t=22287&view=previous

Neste caso, o vetor se comporta com uma "matriz de matrizes".

Imaginemos um número, então o vetor é uma seqüência de números, por exemplo

vetor = [1, 1, 1, 1, 1, 2],

assim, a matriz é um vetor de vetores (um vetor, onde cada elemento é um vetor),

 matriz = [vetor1, vetor2, vetor3, ...]

uma matriz 3D (matrizes com mais de 2 dimensões também podem ser chamadas de tensores) é um vetor de matrizes 2D,

tensor3D = [matriz1, matriz2, matriz3, ...]

uma matriz 4D é um vetor de matrizes 3D (um vetor, onde cada elemento é uma matriz 3D),

tensor4D = [tensor3D_1, tensor3D_2, tensor3D_3, ...]

e assim por diante.

Quanto à forma que isso se coporta na memória, é meio complicado de explicar, mas imagine que todos os elementos da matriz de 'n' dimensões (números) estão enfileirados, um atrás do outro, e o acesso a cada elemento é feito seguinto a lógica da dimensionalidade (número de dimensões).

sexta-feira, 12 de fevereiro de 2010

Remédios a base de TI

Antes de tudo, eu gostaria de me justificar pela minha ausência no blog, pois os dois últimos meses têm sido muito carregados.

Hoje eu vi esta notícia e achei interessante como o conhecimento pode ser associado, mesmo em áreas tradicionalmente mais distantes.

As associações entre telecomunicações, computação, farmácia e medicina, dentre outras, favorecendo a saúde da população de um modo prático e confortável.

Só para dar uma noção do que acontece, por exemplo, em um sistema de análise de algum parâmetro acoplado a um video-game (como o sistema de análise de glicose).

Vamos imaginar que os sensores estejam juntos ao joystick e que estes passem os dados para o console e este, por sua vez, mande, via internet, os dados para a clínica.

O primeiro é a construção dos sensores de modo a serem colocados no joystick de modo a não torná-lo desconfortável.

Depois os dados capturados pelos sensores são enviados ao console, o qual pode fazer uma série de análises dos dados, comparar com outros dados já armazenados, e/ou fazer extração de redundâncias ou critpografias para enviar os dados pela internet à clínica especializada, o que necessita da infraestrutura já conhecida da maioria dos leitores.

Por fim, os especialistas também irão usar aplicativos para auxílio ao diagnóstico para determinar a condição do paciente.

E tudo isto enquanto o paciente está se divertindo com seu video-game.

sábado, 30 de maio de 2009

Top Blog

Hoje eu tive uma surpresa ao abrir minha caixa de e-mails. Vi que o MultiSign havia sido indicado ao Top Blog.

Então eu pensei, se os meu leitores não comentam quase nenhum post, alguns poucos entram em contato por messenger ou e-mail. Eu agradeço os que interagem, mas vocês sabem qual a realidade do MultiSign.

Eu fiquei até pensando se não seria uma boa inscrever o MultiSign, mas resolvi avisar aos leitores e ver a reação.

Se a resposta for positiva, eu faço a inscrição.


Se não tiver resposta, enfim é assim mesmo, não irei deixar de atualizar o blog.

quarta-feira, 6 de maio de 2009

Tutorial Scilab - 7 [Operações elemento a elemento]

[English version here.]

Estão vendo como é difícil atualizar o MultiSign e escrever a dissertação? Mas assim que possível iremos regularizar a situação.

Vamos abordar as operações elemento a elemento usando o Scilab.

Este post será basicamente de exemplos.

Vamos supor que temos duas matrizes de mesmo tamanho (X e Y) e queremos multiplicar (Z1) e dividir (Z2) os elementos correspondentes:

X = [x11 x12 x13;
x21 x22 x23;
x31 x32 x33].

Y = [y11 y12 y13;
y21 y22 y23;
y31 y32 y33].

Z1 = [x11*y11 x12*y12 x13*y13;
x21*y21 x22*y22 x23*y23;
x31*y31 x32*y32 x33*y33].

Z2 = [x11/y11 x12/y12 x13/y13;
x21/y21 x22/y22 x23/y23;
x31/y31 x32/y32 x33/y33].

Não existe um operador matemático matricial para tal operação, mas o Scilab tem um recurso para fazer isso. Observem a seguir.

-->X = zeros(3,3);

-->X(:) = [1:9]'
X =

1. 4. 7.
2. 5. 8.
3. 6. 9.

-->Y = ones(3,3) + X'
Y =

2. 3. 4.
5. 6. 7.
8. 9. 10.

-->Z1 = X.*Y
Z1 =

2. 12. 28.
10. 30. 56.
24. 54. 90.

-->Z1 = X./Y
Z1 =

0.5 1.3333333 1.75
0.4 0.8333333 1.1428571
0.375 0.6666667 0.9

As operações de soma e subtração matriciais operam elemento a elemento.


Operações lógicas

Agora vamos fazer operações lógicas com matrizes.

Os operadores:

  • & - AND;
  • | - OR;
  • ~ - NOT.
E um código de exemplo:

-->X = rand(3,3) > 0.2
X =

F T T
T F T
T T T

-->Y = rand(3,3,'normal') > 0.5
Y =

T T F
T F T
F F F

-->Z1 = X & Y
Z1 =

F T F
T F T
F F F

-->Z2 = X | Y
Z2 =

T T T
T F T
T T T

-->Z3 = ~X
Z3 =

T F F
F T F
F F F

-->Z4 = (~X) | Y
Z4 =

T T F
T T T
F F F

Com isso, fechamos a parte de operações matriciais básicas.

quinta-feira, 26 de fevereiro de 2009

Convolução

O que é convolução? Aos que um dia estudaram análise funcional em matemática ou processamento de sinais e/ou processamento de imagens, estes um dia se perguntaram: "O que é convolução?" e hoje vamos, no retorno do Carnaval, tentar mostrar uma luz.

Vamos primeiro tomar uma função f(t) qualquer, f(t) pode ser um sinal de voz por exemplo.

Agora nós queremos analisar a semelhança entre f(t) e uma outra função h(t), em que h(t) é uma função conhecida. A medida de semelhança entre f(t) e h(t) deve ser definida para todo t, pois nós não sabemos em que ponto de f(t) passa a ser mais semelhante a h(t).

Agora que nós sabemos o que é preciso fazer, vamos ver como fazer.

Se nós temos uma função f(t), a função que mais se aproxima de f(t) é a própria f(t) (óbvio), então se nós passarmos a função f(t) sobre ela mesma e para cada defasagem (t - s) nós calcularmos a semelhança, teremos um máximo quando a defasagem for nula (s = 0).

Porém, se tomarmos a função f(t - a) (f(t) defasado, em atraso, de a), então ao passar f(t - a) sobre f(t), teremos a máxima semelhança quando a defasagem for tal que anule o atraso a (s = -a).

Agora, se a função for outra (h(t), previamente conhecida) nós não temos informação de como nem em que ponto a semelhança entre f(t) e h(t) ocorre.

Então precisamos fazer essa medição, e eu digo que essa medição de semelhança entre duas funções para cada instante t é a convolução entre f(t) e h(t).

Por fim, por que fazer a análise de semelhança entre duas funções?

Porque nós podemos precisar encontrar padrões, já conhecidos, em funções que possuímos. Voltando ao sinal de voz, nós podemos tentar localizar fonemas (padrões conhecidos) ao longo do sinal capturado.

--------------------
A função do Scilab que implementa a convolução é convol().

quinta-feira, 19 de fevereiro de 2009

Tutorial Scilab - 4 [Vetores e Matrizes - 3]

[English version here.]

Vamos agora abordar funções mais específicas para manipulação de matrizes.

As funções que mais uso são as seguintes:

  • eye(m,n) - matriz identidade;
  • zeros(m,n) - matriz de zeros (0's);
  • ones(m,n) - matriz de uns (1's);
  • det(X) - determinante;
  • inv(X) - matriz inversa;
  • pinv(A,[tol]) - pseudoinversa;
  • sum(x,[key]) - soma de vetor/matriz (todos os elementos ou sobre um eixo);
  • prod(x,[key]) - produto de vetor/matriz (todos os elementos ou sobre um eixo);
  • mean(x,[key]) - média de vetor/matriz (todos os elementos ou sobre um eixo);
  • stdev(x,[key]) - desvio padrãode vetor/matriz (todos os elementos ou sobre um eixo);
  • geomean(x,[key]) - média geometrica de vetor/matriz (todos os elementos ou sobre um eixo);
  • harmean(x,[key]) - média harmonica de vetor/matriz (todos os elementos ou sobre um eixo);
  • msd(x,[key]) - desvio médio quadrático de vetor/matriz (todos os elementos ou sobre um eixo);
  • rand(m1,m2,.. [,key]) - gerador de números aleatórios;
  • grand(m, n, dist_type [,p1,...,pk]) - gerador de números e sequências aleatórios;
  • find(X) - localiza os índices de valores não-nulos ou verdadeiros (para variáveis booleanas).

  • Como é de se esperar, "cada função é uma função".

    Agora, aos exemplos:

    -->eye(3,3) // matriz identidade 3 x 3*
    ans =

    1. 0. 0.
    0. 1. 0.
    0. 0. 1.

    -->rand(5,2) // matriz (5 linhas e 2 colunas) de números aleatórios com distribuição de probabilidade uniforme entre [0, 1]
    ans =

    0.0683740 0.5442573
    0.5608486 0.2320748
    0.6623569 0.2312237
    0.7263507 0.2164633
    0.1985144 0.8833888

    -->rand(2,5,'normal') // matriz (2 linhas e 5 colunas) de números aleatórios com distribuição normal (Gaussiana) de média = 0 e variância = 1
    ans =

    1.0478272 - 1.4061926 - 1.7350313 - 0.2143931 2.5891773
    - 1.3218008 - 1.0384734 0.5546874 - 2.0735088 0.0424792

    -->det(eye(4,4)) // determinante da matriz identidade 4 x 4
    ans =

    1.

    -->X = rand(5,5) // X é uma matriz (5 x 5) com valores aleatórios entre [0, 1]
    X =

    0.4368588 0.0437334 0.1280058 0.1531217 0.8784126
    0.2693125 0.4818509 0.7783129 0.6970851 0.1138360
    0.6325745 0.2639556 0.2119030 0.8415518 0.1998338
    0.4051954 0.4148104 0.1121355 0.4062025 0.5618661
    0.9184708 0.2806498 0.6856896 0.4094825 0.5896177

    -->det_X = det(X) // det_X é o determinante de X
    det_X =

    - 0.0799884

    -->[py px] = find(eye(3,3)) // px corresponde as posições (eixo - x) dos números não-nulos (diferentes de zero) e py corresponde as posições (eixo - y) destes números
    px =

    1. 2. 3.
    py =

    1. 2. 3.

    -->[py px] = find(~eye(3,3)) // o til '~' é a operação de negação lógica, então (~0) = 1 e (~1) = 0**
    px =

    1. 1. 2. 2. 3. 3.
    py =

    2. 3. 1. 3. 1. 2.


    -->X // a variável X (X = rand(5,5)) definida antes
    X =

    0.4368588 0.0437334 0.1280058 0.1531217 0.8784126
    0.2693125 0.4818509 0.7783129 0.6970851 0.1138360
    0.6325745 0.2639556 0.2119030 0.8415518 0.1998338
    0.4051954 0.4148104 0.1121355 0.4062025 0.5618661
    0.9184708 0.2806498 0.6856896 0.4094825 0.5896177

    -->sum(X,'r') // soma sobre as colunas de X (linha de valores)
    ans =

    2.6624119 1.4850001 1.9160468 2.5074436 2.3435661

    -->sum(X,'c') // soma sobre as linhas de X (coluna de valores)
    ans =

    1.6401323
    2.3403973
    2.1498187
    1.9002098
    2.8839105

    -->sum(X) // soma de todos os elementos de X
    ans =

    10.914469


    Ok, caso os leitores se manifestem, posso fazer novos posts aprofundando mais cada função.

    ------------------
    * Se o comando é dado sem o ponto-e-vírgula ';' então o resultado da comando é apresentado no prompt e armazenado na variável ans.

    ** Operações lógicas são cenas futuras que veremos aqui no MultiSign.

    segunda-feira, 16 de fevereiro de 2009

    Tutorial Scilab - 3 [Vetores e Matrizes - 2]

    [English version here.]

    Vamos começar com as funções que podem ser usadas em matrizes e vetores no Scilab.

    Como já se sabe, o Scilab tem várias funções matemáticas, por exemplo: sin, cos, tan, asin, acos, atan, exp, log, etc....

    Todas estas funções podem ser usadas em tensores, matrizes, vetores e escalares.

    Vamos agora ao primeiro exemplo:

    -->x = [1 0 1;
    -->0 1 0;
    -->1 0 1]
    x =

    1. 0. 1.
    0. 1. 0.
    1. 0. 1.

    -->y = cos(%pi*x) // o Scilab tem algumas constantes pré-definidas, eu conheco PI (%pi = 3.1415927) e E (%e = 2.7182818)
    y =

    - 1. 1. - 1.
    1. - 1. 1.
    - 1. 1. - 1.


    Lembrando que cos(%pi) = -1 e cos(0) = 1 (círculo trigonométrico).

    Dando continuidade ao post, operações com matrizes geram novas matrizes e estas novas matrizes podem ser usadas em outras operações e/ou funções.

    Segundo exemplo:

    -->x = [1 2 3]
    x =

    1. 2. 3.

    -->y = [3;
    -->2;
    -->1]
    y =

    3.
    2.
    1.

    -->z1 = exp(x*y)
    z1 =

    22026.466

    -->z2 = exp(y*x)
    z2 =

    20.085537 403.42879 8103.0839
    7.3890561 54.59815 403.42879
    2.7182818 7.3890561 20.085537


    A operação x*y resulta em:
    x*y = [1*3 + 2*2 + 3*1] = [3 + 4 + 3] = 10.

    E a operação y*x resulta em:
    y*x =
    [3*1 3*2 3*3;
    2*1 2*2 2*3;
    1*1 1*2 1*3] =
    [3 6 9;
    2 4 6;
    1 2 3].


    A função exp() retorna a exponencial natural (exp(x) = %e^x).

    segunda-feira, 2 de fevereiro de 2009

    Tutorial Scilab - 2 [Vetores e Matrizes - 1]

    [English version here.]

    Como faz tempo que fiz o primeiro post do tutorial do Scilab, acho que está na hora de continuar o serviço.

    Como já foi dito, o Scilab é muito semelhante ao Matlab (que eu não gosto, nem uso e muito menos recomendo). E Matlab é uma sigla para "Laboratório de Matrizes", ou seja, é um software voltado para a manipulação matricial de dados.

    Se nós temos a equação y = A x, em que:

    x = [1 2 3 4]' (x é um vetor coluna)

    e

    A = [1 2 3 4;
    1 2 3 4;
    1 2 3 4;
    1 2 3 4].

    Em que A é uma matriz quadrada.

    Obtem-se que:

    y = [x[1]A[1,1]+x[2]A[2,1]+x[3]A[3,1]+x[4]A[4,1] x[1]A[1,2]+x[2]A[2,2]+x[3]A[3,2]+x[4]A[4,2] x[1]A[1,3]+x[2]A[2,3]+x[3]A[3,3]+x[4]A[4,3] x[1]A[1,4]+x[2]A[2,4]+x[3]A[3,4]+x[4]A[4,4]]' = [1²+2²+3²+4² 1²+2²+3²+4² 1²+2²+3²+4² 1²+2²+3²+4²]' = [30 30 30 30]'.

    Para fazer operações assim em linguagens de programação convencionais (C/C++, Java, Python, Pascal, Perl, etc...) seria necessário declarar as variáveis como vetores ou matrizes (com ponteiros, a depender da situação) e fazer laços de repetição.

    Mas, como o Scilab é um software criado para manipular matrizes, deve ser fácil resolver este tipo de problema.

    Realmente é fácil, basta fazer o seguinte:

    -->x = [1 2 3 4]'; // a apostrofe { ' } indica a transposição, então x é um vetor coluna, pois [1 2 3 4] é um vetor linha e x é [1 2 3 4] transposto.

    -->A = [1 2 3 4;
    -->1 2 3 4;
    -->1 2 3 4;
    -->1 2 3 4];

    -->y = A*x
    y =

    30.
    30.
    30.
    30.

    Observem a coerência com o que foi explicado, pois obtemos o vetor coluna y = [30 30 30 30]'.

    Para os que estudam álgebra linear, esperem que o Scilab vai resolver muitos problemas para vocês.

    terça-feira, 27 de janeiro de 2009

    Aprendizagem neural

    Vou fazer uma conversa (monólogo*) sobre computação neural.

    Os algoritmos de computação neural são baseados em observações da natureza, em especial do sistema nervoso dos animais.

    A base da computação neural é a aprendizagem a partir de exemplos, como eu já comentei aqui.

    Os algoritmos têm a capacidade de assimilar a informação pela própria informação, como nós mesmo fazemos.

    Os computadores tradicionais armazenam a informação em endereços de memória, e quando precisamos daquela informação nós fornecemos o endereço em que ela se encontra. Em sistemas neurais, quando nós precisamos de uma informação nós temos que fornecer ao sistema a informação associada.

    Vamos fazer um paralelo com nosso cérebro. Você não pode numerar todos os seus neurônios e sair analisando a informação presente em cada um, porém você pode acessar a informação armazenada a partir de uma outra informação associada, por exemplo: cachorro. Você visualizou um cachorro em sua cabeça, conforme os padrões que você conhece de um cachorro.

    Vamos dar outro exemplo:


    Ao ver a imagem acima, você lembra das palavras jardim, plantas e flores e das emoções, normalmente, associadas: paz, tranquilidade, calma, etc....

    Lembremo-nos que se Deus criou a natureza perfeita, nós podemos buscar inspiração nela para criar nossas coisas, consientes que nunca chegaremos a tamanha perfeição.

    ______________________
    * Se vocês interagirem vira um diálogo.

    terça-feira, 13 de janeiro de 2009

    Tutorial - Scilab 1

    Vamos começar com o tutorial de Scilab hoje.

    A instalação necessária é a trivial: quem usa M$ Window$ baixa o instalador e quem usa GNU/Linux pode baixar pelo Synaptic ou apt-get.

    Só para dar uma ajuda aos usuários de GNU/Linux, para instalar o Scilab pelo apt-get, basta dar o comando:

    >> apt-get install scilab scilab-bin scilab-doc

    Pois bem, depois de instalado o Scilab está pronto para ser usado.

    Abra o Scilab e vamos começar dando comandos no prompt.

    A declaração de variáveis é implícita, como em Python, ou seja, você declara uma variável inicializando-a.

    Vamos declarar uma variável x (float) com um valor inicial de 0 (zero).

    --> x = 0;

    Agora vamos tomar outra variável y (float) com valor inicial de 2.

    --> y = 2;

    Agora podemos fazer operações sobre as variáveis.

    --> soma = x + y;
    --> diferenca = x - y;
    --> produto = x*y;
    --> razao = x/y;

    Caso você não coloque o ponto-e-vírgula no final do comando, a variável ecoa no prompt.

    --> soma = x + y
    soma =

    2.

    --> diferenca = x - y
    diferenca =

    - 2.

    --> produto = x*y
    produto =

    0.

    --> razao = x/y
    razao =

    0.

    Com isso, podemos fazer as operações aritméticas convencionais que são a base de toda a matemática computacional.

    Para fechar a primeira parte do tutorial, vamos trabalhar com agrupamentos nas operações.

    Vamos ter as variáveis x1, x2, x3, x4 e x5 e como resultado res1, res2 e res3.

    --> x1 = 1;
    --> x2 = 2;
    --> x3 = 3;
    --> x4 = 4;
    --> x5 = 5;
    -->
    --> res1 = (x1 + x2)*(x3 + x4)/x5;
    --> res2 = (x1 + x2*(x3 - x4)) - x5;
    --> res3 = x1 + (x2 - (x3 + (x4*x5)));

    Assim começamos o que pode ter de mais simples no Scilab, acompanhem o MultiSign que muito ainda está por vir.

    terça-feira, 6 de janeiro de 2009

    Volta a ativa

    Eu irei fazer uma viagem hoje e estarei retornando na segunda-feira, de modo que assim que voltar irei iniciar o tutorial do Scilab.

    Caso alguém tenha alguma sugestão de temas para os exemplos de código, fique a vontade para pedir (processamento de sinais e/ou imagens, inteligência computacional, automação e controle, etc....).

    Enfim, eu acho que com as sugestões dos leitores, que devem ser os mais interessados no blog, o tutorial ficará muito bom.

    quinta-feira, 6 de novembro de 2008

    Lógica Fuzzy

    Lógica Fuzzy é uma generalização da teoria dos conjuntos clássica.

    Na teoria dos conjuntos clássica, se eu tiver um determinado elemento, este elemento pode pertencer ou não a um determinado conjunto.

    Por exemplo, tomando o universo das frutas, a tangerina pertence ao conjunto das frutas cítricas. A maçã não pertence ao conjunto das frutas cítricas.

    Mas se tomarmos o universo das pessoas, vamos classificar as pessoas em ricas e pobres. Como critério vamos tomar o patrimônio de cada pessoa e determinar que pessoas com patrimônio acima de R$500.000,00 sejam ricas e abaixo sejam pobres, então pessoas com patrimônios de R$10.000,00; R$30.000,00; R$50.000,00; R$70.000,00; R$100.000,00; R$120.000,00; R$180.000,00; R$210.000,00; R$220.000,00; R$300.000,00; R$450.000,00; R$480.000,00; R$492.000,00; R$497.000,00; R$499.800,00; R$499.930,00; R$499.981,00; R$499.996,00; R$499.999,20; R$499.999,98 seriam pobres e pessoas com patrimônios de R$1.000.000,00; R$980.000,00; R$840.000,00; R$770.000,00; R$680.000,00; R$610.000,00; R$590.000,00; R$540.000,00; R$510.000,00; R$508.000,00; R$502.000,00; R$501.000,00; R$500.100,00; R$500.010,00; R$500.001,00; R$500.000,10 seriam ricas. Mas qual a diferença de padrimônio entre R$500.000,02 e R$499.999,97? Isto não vale nem um pirulito que vendem nas paradas de ônibus, algumas vezes nem dão o troco menor que R$0,10.

    Então, para resolver o problema, a lógica fuzzy incorpora o conceito de pertinência. De modo que todos os elementos pertencem a todos os conjuntos, porém pertencem mais ou menos a um determinado conjunto.

    Uma aplicação interessante da lógica fuzzy e que é presente em nosso cotidiano são os aparelhos de ar-condicionado, que têm algoritmos de lógica fuzzy embarcados para o controle da temperatura, assim evitando que a chave fique disparando toda hora, e considerando que o disparo da chave é o que gasta mais energia no aparelho de ar-condicionado, isto implica em uma economia muito considerável, por isto também que estes são os aparelhos com selo de economia de energia.

    Segue um vídeo que mostra uma aplicação que fiz usando lógica fuzzy para controlar um foguete.

    sexta-feira, 3 de outubro de 2008

    Celular com raio-x

    Hoje vi esta notícia e achei muito interessante.

    Trata-se de um software que vai usar GPS, sensores geomagnéticos e de aceleração e outros recursos a mais para "ver atraveś" das paredes.

    A idéia, pelo que entendi, é a seguinte:

    Primeiro toma-se conhecimento de todos os pontos (cômodos) de todas a infraestrutura (casas, prédios, ruas, etc....) de onde se encontra o usuário. Os sensores vão determinar a posição e para onde o celular está sendo apontado, aí é só fazer um modelo 3D (vão usar OpenGL para fazer o modelo) e simular que o celular tem uma câmera que "vê" através da parede.

    Neste caso, a visão pode ser de coisas muito mais distântes, pois basta acessar a informação e criar o modelo, de modo que é possível ver através de várias paredes ao mesmo tempo.

    sábado, 20 de setembro de 2008

    De onde vem o resto da energia?

    Assista o vídeo abaixo:



    Agora pensemos:

    O inventor diz que com 400Watts consegue gerar 1600Watts, de onde vem os outros 1200Watts?

    Com as conversões de energia, sempre existem perdas então qualquer forma de converter a energia elétrica em outra natureza (energia mecânica ou térmica) e depois voltar para energia elétrica iria ter 2 vezes perdas.

    Uma solução poderia ser usar buffers de corrente, aí poderia-se manter a tensão (220V ~ 60Hz, por exemplo) e aumentar a capacidade de corrente, pois a potência é o produto da tensão pela corrente, mas neste caso não fica claro o que poderia ser o buffer de corrente.

    Em eletrônica (circuitos de baixa potência, como celulares e computadores) os buffers de correntes são apenas transistores operando em regiões de saturação.

    Enfim, caso o inventor venha a ler este post, eu ficaria muito feliz se ele entrasse em contato para explicar como funciona o multiplicador de energia.