Danilo R. Vieira | Oceanógrafo

Aqui estão algumas das coisas que eu aprendi, descobri ou fiz (por obrigação ou por diversão). Espero que encontre algo que seja útil para você.

MATLAB → Gráficos

Curva de luz fotossíntese

Este é um dos exemplos mais simples do site, nele serão obtidos os diversos parâmetros de uma curva de luz fotossíntese. Serão usados dados de Tetraselmis gracilis. Os dados foram obtidos durante a aula prática descrita no relatório sobre Curva de Luz × Fotossíntese.

Conteúdo

clear all; close all; clc;

Primeiro a matriz: uma coluna com intensidades de luz, uma com os dados obtidos no laboratório e a terceira terá a produção primária normalizada.

dados = [0 5.7094; 3.8180 5.5968; 4.1500 6.6294; 9.9600 6.0615; ...
         11.6200 5.9479; 26.5600 7.5722; 96.2800 9.3442; 249.0000 ...
         10.5844; 298.8000 12.0259; 332.0000 10.6877];
dados(:,2) = (dados(:,2)-6.1735)/2;
dados(:,3) = (dados(:,2)/0.7)*375;
dados(:,3) = dados(:,3)/484.3;

Plotando os dados

Adapta um polinômio de terceiro grau aos dados

sp = spap2(1,3,dados(:,1),dados(:,3));
% Plota o polinômio adaptado
fnplt(sp);
hold on;
% Plota os dados
plot(dados(:,1),dados(:,3),'or');
set(gcf, 'color', 'w');

[Plotagem inicial]

Obtendo os parâmetros

% Adapta uma reta aos sete primeiros pontos, o ângulo entre essa reta e o
% eixo X será o alpha.
a = polyfit(dados(1:7,1),dados(1:7,3),1);
xx = 0:220;
yy = a(1)*xx+a(2);
plot(xx,yy,'color',[.7 .7 .7],'LineStyle','--');
% Determina o ponto de máximo da curva, sabendo-se que este pode ser
% encontrado onde a primeira derivada for zero
zr = fnzeros(fnder(sp));
% Encontra o valor da curva no ponto de máximo
b = fnval(sp, zr(1));
line([0 zr(1)], [b b], 'color',[.7 .7 .7],'LineStyle','--');
% Determina I(k), sabendo que ele encontra-se na intersecção das retas
Ik = (b-a(2))/a(1);
line([Ik Ik], [-1 4], 'color',[.4 .4 .4],'LineStyle','--');
line([0 340], [0 0], 'color',[.7 .7 .7],'LineStyle','--');
% Determina alpha, que é o arco tangente do coeficiente
% angular da primeira reta
alpha = atand(a(1));

[Mais detalhes]

Anotações e pequenos detalhes…

title 'Curva de luz \times Fotossíntese para \itTetraselmis gracilis'
xlabel 'Intensidade luminosa (\mu{}E m^{-2} s^{-1})'
ylabel 'Produção primária normalizada'
axis([0 340 -.5 3.3]);
iktxt = strcat('\leftarrow{} ', sprintf(' I(k) = %.2f',Ik));
text(150,1,iktxt);
btxt  = sprintf('P_{b}^{max} = %.2f',b);
text(50,3,btxt);
pto_comp = fnzeros(sp);
line([pto_comp(1) pto_comp(1)], [-200 .5], 'color',[.4 .4 .4],'LineStyle','--');
set(gca,'XTick',[0 100 200 300 332])
set(gca,'YTick',0:1:3)
alphatxt = strcat('\alpha', sprintf('{} = %.2f',alpha), '\circ \rightarrow');
text(125, 2.5, alphatxt,'HorizontalAlignment','right');
hold off;

[Resultado final]