Calculate dV/dQ to plot differential voltage analysis curve?
51 ビュー (過去 30 日間)
表示 古いコメント
ekagra gupta
2022 年 6 月 3 日
回答済み: Alberto Cuadra Lara
2022 年 6 月 3 日
I have all the required data but do not know how to differentiate my voltage with respect to discharge/charge capacity given.
採用された回答
Alberto Cuadra Lara
2022 年 6 月 3 日
Hello Ekagra,
I guess you have numerical values of the voltage as a function of the discharge/charge capacity, right? In this case, you can compute the first derivative numerically, e.g., using finite central differences as follows, where x and y will be Q and V, respectively.
% Definitions
x = linspace(0, 2*pi);
y = sin(x);
% Compute first derivative
dydx = compute_first_derivative(y, x);
% Plot
figure; hold on;
plot(x, y);
plot(x(2:end), dydx);
xlabel('x', 'interpreter', 'latex')
ylabel('y', 'interpreter', 'latex')
legend({'y(x)', 'dy(x)/dx'}, 'interpreter', 'latex', 'location', 'northeastoutside');
% SUB-PASS FUNCTION
function dxdy = compute_first_derivative(x, y)
% Compute first central derivate using a non-uniform grid
%
% Args:
% x (float): Values for the corresponding grid
% y (float): Grid values
%
% Returns:
% dxdy (float): Value of the first derivate for the given grid and its corresponding values
%
% Author: Alberto Cuadra-Lara
h = y(2:end) - y(1:end-1);
hmax = max(h);
mu = h / hmax;
dxdy = zeros(1, length(h));
dxdy(1) = ((x(2) - x(1)) ./ h(1));
for i = 2:length(mu)-1
dxdy(i) = (mu(i)^2 * x(i+1) - (mu(i)^2 - mu(i+1)^2) * x(i) - mu(i+1)^2 * x(i-1)) / ((mu(i)^2 * mu(i+1) + mu(i) * mu(i+1)^2) * hmax);
end
% Direct method
% dxdy(2:end-1) = (mu(2:end-1).^2 .* x(3:end-1) - (mu(2:end-1).^2 - mu(3:end).^2) .* x(2:end-2) - mu(3:end).^2 .* x(1:end-3)) ./ ((mu(2:end-1).^2 .* mu(3:end) + mu(2:end-1) .* mu(3:end).^2) * hmax);
dxdy(end) = ((x(end) - x(end-1)) ./ h(end));
end
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!