Площадь под кривой циклической вольтамперометрии в определенных пределах - PullRequest
0 голосов
/ 28 мая 2019

Я хочу вычислить интегральную площадь под кривой для I> 0 и V <0.4, я не смог сделать это с помощью функции trapz, помогите, пожалуйста! </p>

Я пробовал использовать как интегральные функции, так и функции trapz, но безрезультатно! Я не смог прикрепить текстовый файл, поэтому, если он вам нужен для отладки, пожалуйста, дайте мне знать, как это сделать.

close all
clear all
clc
c=Constants;
F = dir('*.txt');  
nF = length(F) ;
count = 0 ;
for ii = 1:nF
fname = F(ii).name ;
end
filename = fullfile(fname);
fileID = fopen(filename);
formatSpec = '%s';
N = 1;
c_text = textscan(fileID,formatSpec,N,'Delimiter',' ');
c_data = textscan(fileID,'%f %f');
v=c_data{1};
i=c_data{2};

idi = i>0;
idv=v<0.4;
v_pos = v(idv);
i_pos= i(idi); 
% v_limit=v_pos(idv)

inty = trapz(v_pos, i_pos)


setvalue = 0.06;
[~,closestIndex] = min(abs(setvalue-v_pos));
vm= v_pos(closestIndex)

setvalue = 0.4;
[~,closestIndex] = min(abs(setvalue-v_pos));
vf= v_pos(closestIndex)
ifinal=i_pos(closestIndex)

figure(1)
plot(v,i)
hold on
hold off
grid
area=inty-[(vf-vm)*ifinal]
yline(0);

cvarea=area/1000;
qh=cvarea/c.cvscanrate;
active_area=qh/(c.qpt*c.A);
fprintf('Active surface area of catalyst %g cm^2 Pt/ cm^2 electrode \n', active_area);

Ошибка при использовании trapz (строка 66) Интервал между точками должен быть скаляром, определяющим равномерный интервал или вектор x-координат для каждой точки данных.

1 Ответ

0 голосов
/ 28 мая 2019

Существует несколько методов вычисления дискретного интеграла.

Вот приближение суммы Римана

enter image description here

А воттрапециевидное правило, используемое trapz

enter image description here

Сумма Римана вычислить проще всего.

Вам просто нужны ширина ивысота каждого прямоугольника (чтобы мы могли вычислить площадь).

%Dummy data:
x = 0:0.1:10;
y = x.^2;  
%Width
X = diff(x)
%Height
Y = conv(y,ones(2,1),'valid')/2
%Integral:
I = sum(X.*Y)

Этот метод будет работать, даже если интервал между точками будет неравномерным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...