Créditos: GNU/Octave

Alternativas ao MATLAB #1 – GNU/Octave

Alguns testes

Para essa alternativa, e outras que virão em futuros posts, usaremos um script simples de regressão linear. Os dados foram obtidos a partir do site da NIST e consiste em um modelo polinomial de sete parâmetros, ou seja:

\(y = b_0 + b_1 \cdot x_1 + b_2 \cdot x_2 + b_3 \cdot x_3 + b_4 \cdot x_4 + b_5 \cdot x_5 + b_6 \cdot x_6 + \epsilon.\)

?View Code MATLAB
% Arquivo de testes para as alternativas do MATLAB
% Modelo de regressão linear com 7 parâmetros
% y = B0 + B1*x1 + B2*x2 + B3*x3 + B4*x4 + B5*x5 + B6*x6 + e
 
clc
clear all
format short e
 
% Definindo variáveis
% data = [y x1 x2 x3 x4 x5 x6]
data = [60323    83.0   234289   2356     1590    107608  1947
        61122    88.5   259426   2325     1456    108632  1948
        60171    88.2   258054   3682     1616    109773  1949
        61187    89.5   284599   3351     1650    110929  1950
        63221    96.2   328975   2099     3099    112075  1951
        63639    98.1   346999   1932     3594    113270  1952
        64989    99.0   365385   1870     3547    115094  1953
        63761   100.0   363112   3578     3350    116219  1954
        66019   101.2   397469   2904     3048    117388  1955
        67857   104.6   419180   2822     2857    118734  1956
        68169   108.4   442769   2936     2798    120445  1957
        66513   110.8   444546   4681     2637    121950  1958
        68655   112.6   482704   3813     2552    123366  1959
        69564   114.2   502601   3931     2514    125368  1960
        69331   115.7   518173   4806     2572    127852  1961
        70551   116.9   554894   4007     2827    130081  1962];
y = data(:,1);
x = data(:,2:end);
 
% Adicionando uma coluna de 1 para x0
x = [ones(size(y)) x];
 
% Obtendo os parâmetros
b = xy
 
% Plotando os resultados
y_mod = x * b;
h = figure(1);
plot(x(:,7),y,'ro',x(:,7),y_mod,'k-')
legend('x_6 versus y')
print(h, '-dpng', 'test.png')

Os resultados apresentados no MATLAB® foram:

\(b = \begin{bmatrix} -3.4823e+006 \\
1.5062e+001 \\
-3.5819e-002 \\
-2.0202e+000 \\
-1.0332e+000 \\
-5.1104e-002 \\
1.8292e+003
\end{bmatrix}\)

Resultado - Matlab

Ao executar o mesmo m-file no GNU/Octave, não houve surpresa… Não foi preciso nenhuma adaptação no código-fonte original, ou no formato do arquivo para que os comandos fossem executados. Os resultados apresentados pelo GNU/Octave foram:

\(b = \begin{bmatrix} -3.4823e+06 \\
1.5062e+01 \\
-3.5819e-02 \\
-2.0202e+00 \\
-1.0332e+00 \\
-5.1104e-02 \\
1.8292e+03
\end{bmatrix}\)

Resultado - GNU/Octave

Vale ressaltar que apesar de reconhecer os comandos do MATLAB®, o GNU/Octave faz livres abordagens de como esses comandos serão processados. Um exemplo disso é, no m-file executado neste artigo, como o GNU/Octave prefere o formato de exibição de dados “short e” em vez do “short”, que é padrão no MATLAB®. Outro exemplo é como as informações são exibidas em gráfico: o GNU/Octave, por usar o GnuPlot como padrão, prefere um eixo com decimais, enquanto o MATLAB® prefere o formato “short g”.

Por hoje é só. Quaisquer dúvidas e/ou sugestões podem usar a seção de comentários localizada abaixo do artigo.

Deixe uma resposta