这是我的代码
po=0.21; %presuree of oxigen atm
ph=1; %presurre of hydorgen atm
t=0.018; %mem tickness cm
F=96487; %C/mol
R=8.314471; % gas confident J/K Mol
e1=-0.948; %v act confident
e2=0.00312; %v act confident
e3=7.6*(10^(-5)); %v act confident
e4=-1.93*(10^(-4)); %v act confident
n=2; %number of electron
anda=14; %landa
b=8; %confident of V consentration cm^2/Amp
A=4; %cell active area cm^2 and i is current density Amp/Cm^2
r=0.2114
f=1;
j=1;
for T=333:10:363
Co=((po)/(5.08*(10^(6))*exp((-498/T))))
for i=0:0.01:1
v1(j,f)=-[(e1)+(e2*T)+(e3*T*log(Co))+(e4*T*log(i*A))]
f=f+1
end
j=j+1
end
c=1;
h=1
for T=333:10:363
z=(0.005139*(anda)-(0.00326))*exp((1268*((1/303)-(1/T))))
for i=0:0.01:1
v2(h,c)=i*(t/z)
c=c+1
end
h=h+1
end
d=1;
u=1;
for T=333:10:363
a1=(1.1)*(10^(-4))-((1.2*10^(-6))*(T-273))
for i=0:0.01:1
v3(u,d)=a1*exp(b*i)
d=d+1
end
u=u+1
end
q=1;
for T=333:10:363
E=1.229-(0.85*(10^(-3))*(T-298.15))+4.3085*(10^(-5))*T*([log(ph)+(1/2)*log(po)])
V(q)=E-v1(j)-v2(h)-v3(u)
q=q+1
end
T=333:10:363
i=0:0.01:1
plot(i,V,'-')
我希望有一个数字,X标签是i,Y标签是v,我们可以看到不同温度(T)中V的变化。但我面对的错误是"情节 矢量必须是相同的长度。"
如何解决此错误?
答案 0 :(得分:0)
使用size(i) size(V)
检查x,y向量的维度。我应该是一个向量,大小应该是[1 Len]或[Len 1]。确保V的大小也是[Len,xxx]或[xxx,Len],因此它们的长度相同,您可以绘制它。另外,确保我和V具有相同的长度' Len'在相同的维度中,否则您可以使用点引号运算符V.'
来获得转置。
答案 1 :(得分:0)
史蒂文提到,你的尺寸不匹配。更熟悉代码中解释的几个Matlab数组运算符(:和。)可以缩短和澄清代码。
我们开始之前的家务管理:
clc % clear command window
close all % close all figure windows
clear all % clear all variables in workspace
dbstop if error % program stops in debugger if error occurs
声明所有变量:
po=0.21; %presuree of oxigen atm
ph=1; %presurre of hydorgen atm
t=0.018; %mem tickness cm
F=96487; %C/mol
R=8.314471; % gas confident J/K Mol
e1=-0.948; %v act confident
e2=0.00312; %v act confident
e3=7.6*(10^(-5)); %v act confident
e4=-1.93*(10^(-4)); %v act confident
n=2; %number of electron
anda=14; %landa
b=8; %confident of V consentration cm^2/Amp
A=4; %cell active area cm^2 and i is current density Amp/Cm^2
r=0.2114;
将T用作1x4并首先执行此操作 所有这些都将是1x4之后 T = 333:10:363; 请注意使用dot operator进行逐点操作
Co = ((po)./(5.08e6*exp((-498./T))));
z = (0.005139*(anda)-(0.00326))*exp((1268*((1/303)-(1./T))));
a1 = (1.1)*(10^(-4))-((1.2*10^(-6))*(T-273));
E = 1.229-(0.85*(10^(-3))*(T-298.15))+4.3085*(10^(-5))*T*([log(ph)+(1/2)*log(po)]);
现在让我们做所有涉及i的部分。 我们不是从i = 0开始,因为它给出了Nan / Inf结果 I = 0.01:0.01:1;
如果您愿意,可以使用矩阵乘法来执行此操作。它在这里用for循环实现,因为这更容易理解。
for idx = 1:length(T)
% each of these will be a 101x1 vector
v1 =-( e1 + (e2*T(idx)) + (e3*T(idx)*log(Co(idx))) + (e4*T(idx)*log(i*A)) );
v2 = i*(t/z(idx));
v3 = a1(idx)*exp(b*i);
V(idx,:) = E(idx) - v1 - v2 - v3;
end
在V=(idx,:)
行中,我们使用colon operator将101x1向量移入V的idx行。
现在我们可以绘制答案!
plot(i,V,'-')
% now we'll do a little labeling
hYLabel = ylabel('V');
hXLabel = xlabel('i');
hTitle = title('Your title here');