请告诉我以下代码有什么问题?
function [n]=calculate_n(p,delta)
e = 1.6*power(10,-19);
k = 1.38*power(10,-23);
T = 298;
co = 3.25*power(10,13)*e*power(10,4);
er=12.5;
eo=1.0;
Nv=3*power(10,13);
us = log((p*e)/sqrt(2*k*T*er*eo*Nv))*2*k*T;
tmp = delta+(e*e*p)/co+us;
n = 1/(exp((tmp))+1);
end
我在计算n时遇到矩阵尺寸误差。请帮帮我。
呼叫者:
e = 1.6*power(10,-19);
x = logspace(13,18);
y=calculate_n(x,0.2*e);
semilogx(x,y,'-s');
grid on;
答案 0 :(得分:1)
只需将n = 1/(exp((tmp))+1);
替换为n = 1./(exp(tmp)+1);
即可。但请注意,tmp
对于这些值来说是如此之小,以至于exp(tmp)
始终为1.此外,tmp
周围有一个多余的括号,您可能需要检查是否正确放置它们。
编辑:
原因是A/B
尝试解决A*x = B
的线性方程组x
,这不是您想要的。它抛出了一个错误,因为它要求两个变量具有相同的列数。 A./B
执行元素方式矩阵除法,这是您想要的。但是,如果A
和B
是单数A/B = A./B
。有关详细信息,请参阅documentation。