在matlab中绘制电能

时间:2012-03-01 11:17:50

标签: matlab

我正在尝试使用matlab绘制电路的能量(W)。方程是:

Voltage

Current

Power

Energy

enter image description here

绘制电压,电流和功率并不是那么难(我想我写了正确的代码,请告诉我你是否认为它是错的!):

%Variables
t1=20e-3;t2=60e-3;N=1000;f=50;
t=linspace(t1,t2,N);
Vmax = 10; %Peak Voltage
Imax = 2; %Peak Current
f = 50; %Frequency in Hertz
omega = 2 * pi * f;
phi_default = -pi/4; %Constant for phase difference

%Equations
Vsrc = Vmax * sin(omega * t); %Equation for Voltage
Isrc = Imax * sin((omega * t) + phi_default); %Equation for Current
Psrc = Vsrc .* Isrc; %Equation for Power

%Plotting the result
figure(1); %Window 1
plot(t,Vsrc, 'b', t, Isrc, 'r', t, Psrc, 'g'); %Plotting Voltage, Current and Power

现在的问题是我无法想出一种在matlab中绘制能量的方法。我认为应该使用Δt (Delta t)函数来定义diff(t),并且总能量应该是这样的:

enter image description here

平均功率Pavrenter image description here计算,其中T为周期。

所以问题是,如何将总瞬时能量enter image description here绘制为范围enter image description here范围内相位差的函数,我认为for loop应该是必须计算的每个阶段的价值。

此外,我想绘制同一时期的平均功率。

感谢。

1 个答案:

答案 0 :(得分:2)

通过在一段时间内积分功率来计算能量。当你在这里处理离散值时,你必须用和来近似积分。在您的情况下,作为时间函数的瞬时能量是

Winst = (t2 - t1) / N * cumsum(Psrc);

cumsum为您提供了向量Psrc的所有元素的累积总和,(t2 - t1) / N是时间间隔。

为了计算能量作为phi的函数,你必须确定你想要考虑的时间段。您首先计算给定phi的能量,然后在固定时间间隔t1 ... t2:

上再次积分
phi = -pi/2:phi_step:0
Wphi = zeros(1, length(phi));
for k = 1:length(phi)
  Vsrc = Vmax * sin(omega * t);
  Isrc = Imax * sin((omega * t) + phi(k));
  Psrc = Vsrc .* Isrc;
  Wphi(k) = (t2 - t1) / N * sum(Psrc);
end

plot( phi, Wphi);

平均功率只是Psrc的平均值:

Pavg = sum(Psrc) / length(Psrc)