график с матрицей другого порядка в функции - PullRequest
0 голосов
/ 27 февраля 2020

Я хочу построить график E (по оси x) против f (по оси y) для различных значений VA * T , но он показывает матрицу не того же порядка. Как построить для 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')```

1 Ответ

3 голосов
/ 27 февраля 2020

Вам нужно неявное расширение, чтобы найти все эти значения f в одном - go.

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.'))));

Результат:

...