在函数中具有不同阶矩阵的图

问题描述 投票:0回答:1

我想对T的不同值绘制E(在x轴上)与f(在y轴上),但它显示矩阵的阶次不同。如何绘制T = 100,125,150,175,200,...,500并使用不同颜色线宽粗线绘制比通常说的2。虽然当我输入T的单个值时会得到结果。但是我需要知道如何同时为T的多个值进行绘图,并且E的值= 0至10对所有T都是通用的

format long
k = 1.38*1e-21;
e = 1.6*1e-19;
E = (0:0.1:9)*e;

Ef = 5*e;
T=100:25:200;
x=1/(k*T);
f = 1./(exp((E - Ef)*x) + 1); %% fermi function
plot(E,f,'r','LineWidth',2)
legend({'T=100'})
hold on
plot(Ef,0.5,'o','MarkerSize',10,'MarkerFaceColor','blue',...
    'MarkerEdgeColor','black')```

matlab function math mat
1个回答
0
投票

您需要隐式扩展才能一次找到所有f的值。

x = 1./(k*T);  % ./ for element-wise division

f = 1./ (exp((E-Ef) .*  x.') + 1); % fermi function
%  implicit-expansion^    ^fixing dimension order
%         
% In <= R2016a, use bsxfun for implicit expansion as follows:
% f = 1./(exp(bsxfun(@times,E-Ef,x.')) + 1);

%Plotting the results
plot(E,f,'LineWidth',2);  %Don't hard-code red color here if you need different colors
hold on;
plot(Ef,0.5,'o','MarkerSize',10,'MarkerFaceColor','b','MarkerEdgeColor','k');
legend("T="+T); 
%In older versions without string data type, you can create your legend like this: 
%legend(cellstr(strcat('T=',num2str(T.'))));

结果:

© www.soinside.com 2019 - 2024. All rights reserved.