quarta-feira, 12 de novembro de 2014

SoGoSurvey, solving our problems with online surveys !



Collecting data, one of the central issues for many academic works. When it comes to research, to have a well done data-set sometimes is more than half the work needed to have nice results.

Luckily, the internet really helps when comes to surveys. The time demanding struggle of handling questions one person at a time is something of the past, for the majority of cases.

Google forms is a very usual approach and most of the time is the first thing that comes in mind when the necessity to create a survey emerges. For simple cases it really does the job, neat and clean. But when you need to add a little bit of complexity to your research Google forms starts to show its limitations.

For my particular case, I needed the classification of hundreds of microscopy pictures, done by several experts on the field. To ask each one of them if they could please classify in three categories the 300 jpg files that are attached on an email is out of question, nobody would do that.

I could use Google forms to create the 300 questions (with the images), but then comes some statistical problems: First, no one would pay attention to all the 300 questions, maybe the first 10 if I was luck. Second, the sequence of the images could bias the results. The answer is simple, just  show the questions in a randomized order, and then with a nice number of answers I could get some statistical results for all of the data-set. But guess what ? It is impossible to randomize questions on Google forms.

Then I started a odyssey to find another platform that would do the job. There are lots survey systems available on the internet, and the majority of them could solve my problem. But to get the tools I needed (images on questions and randomization) there is always the need for the "pro" version of the services.

When I was almost giving up, and thinking about learning HTML and PHP to create my own survey system, I've found SoGoSurvey (http://www.sogosurvey.com/). It simply has all the features that I needed, with a really nice interface ! SoGoSurvey also uses the same "pro" mechanism as the majority of the other plataforms, but the prices are really apealing. And it comes with a special bonus: It is possible to ask for a one year free student registration.

I guess I just need to thank the SoGoSurvey team for saving my thesis ;)

segunda-feira, 25 de janeiro de 2010

Parar um código durante execução

Comumente, durante o desenvolvimento de programas, acabamos caindo em loops infinitos ou situações indesejadas.

Se deseja parar algum código do Matlab durante sua execução, basta pressionar Ctrl + C.

FOR, IF e WHILE

Sabendo-se criar M-Files, podemos passar a desenvolver loops e condicionais para nossos programas. Basicamente, a lógica é a mesma de qualquer linguagem de programação, basta lembrar que no Matlab os intervalos são criados com ' : ' (dois pontos).
Utilizaremos também o comando disp, que mostra o valor de alguma string ou variável no console:


%Estrutura utilizando loops e condicionais.
for i = 0:10
    disp ('Valor de i = ')
    disp (i)
    disp ('Valor de i elevado ao quadrado')
    q = i^2;
    disp (q)
    if i < 5 
    disp ('i é menor que 5') 
    else disp ('i é maior que 5')
    end
end

Algumas considerações:
- for é diferente de FOR ou For. O Matlab é case-sensitive !
- Note que o comando if não necessita de then, como em algumas linguagens
- todo loop ou condicional necessita de um end.

Utilização do while:


w = 0;
while w<2*pi
    s = sin(w);
    disp ('O seno de')
    disp (w)
    disp ('é igual a:')
    disp (sin(w))
    w = w + 0.1;
end




Com esse Tutorial, a maioria das funções básicas do Matlab está explicada e utilizando o conhecimento adquirido até agora já é possível resolver problemas simples de computação. O Blog continuará se aprofundando em questões mais complexas do Matlab, desde a criação de interfaces gráficas de usuário (GUI) até o desenvolvimento de Redes Neurais Artificiais (RNAs). Quaisquer sugestões sobre quais tópicos devem ser abordados é bem vinda !

sábado, 23 de janeiro de 2010

Criando M-Files (Arquivos .M)

Quando começamos a desenvolver idéias mais complexas, utilizar somente o console torna-se inviável. Para isso, temos a possibilidade de criar os chamados M-Files, onde podemos programar várias linhas de código para serem executadas, como em um método clássico de programação.

Para criar um novo M-File, pressione Ctrl+N ou clique no pequeno ícone que fica no canto superior esquerdo de sua janela:




Podemos fazer comentários colocando " %"  antes do início do mesmo e suprimir que a resposta de determinada linha seja mostrada no console colocando ";" no final de cada linha.

Para rodar seu programa, clique no ícone com uma seta verde, como na figura a seguir:




Para rodar o código, é necessário que ele antes seja salvo. O Matlab vai abrir automaticamente uma janela para isso.
Aqui temos um detalhe importante:  Todos os seus arquivos devem estar em diretórios reconhecidos pelo Matlab, chamados paths. Ao salvar um arquivo em algum local não reconhecido, o Matlab lhe fornecerá a opção "Add to path" que adiciona o local à lista.  Para organizar os paths, na janela principal do Matlab clique em File > Set path.  Lá você pode adicionar suas pastas que comumente utiliza para trabalhar.

sexta-feira, 8 de janeiro de 2010

Plotando gráficos - Parte IV

Da mesma maneira que podemos plotar curvas utilizando funções de variáveis simbólicas, podemos criar superfícies com esse tipo de equações. Veja o código a seguir:

%Declara as variáveis simbólicas
syms x y z
%Cria a função
z = (2*cos(x))^3 + y^2
%Cria um gráfico
ezsurf(z) 


Limpar a tela

Os dois comandos a seguir são bem úteis. O comando clear limpa as variáveis no workspace, e o clc limpa a tela de comando. Bem interessante para quando já passamos algumas horas programando, e tudo parece uma bagunça.

Plotando gráficos - Parte III

Também podemos facilmente criar gráficos tridimensionais.

A maneira mais simples é representando uma matriz em um espaço, de forma que o terceiro eixo é formado pelo valor de cala elemento da matriz. Teriamos portanto um eixo sendo as linhas, outro as colunas e um terceiro sendo o valor de cala elemento da matriz.  Veja o código a seguir :

%Cria um intervalo
A=[0:0.1:2*pi]
%Calcula o seno desse intervalo
B=sin(A)
%Calcula o cosseno desse intervalo
C=cos(A)
%Transposta de B, para multiplicar os dois vetores
B=B'
%Multiplica os dois vetores, criando uma matriz
M=B*C
%O comando surf cria uma superfície utilizando a matriz
surf(M)