为什么我在计算n时会在行中出现矩阵尺寸误差?

时间:2017-05-27 18:19:13

标签: matlab function

请告诉我以下代码有什么问题?

    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;

1 个答案:

答案 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执行元素方式矩阵除法,这是您想要的。但是,如果AB是单数A/B = A./B。有关详细信息,请参阅documentation