two variables one equation 3D plot
2 ビュー (過去 30 日間)
古いコメントを表示
Nickel Blankevoort
2021 年 11 月 24 日
コメント済み: Nickel Blankevoort
2021 年 12 月 1 日
Dear,
I have two input vector matrices as variables alf and gam:
alf = [0, 0.03, 0.1, 0.5, 1, 1.5];
gam = [0, 0.03, 0.1, 0.5, 1, 1.5];
Then I have some complicated steps resulting in one value for each possible combination of the two variables alf and gam.
For example alf=0.03 and gam=1 gives one answer. And alf=0.5 and gam=0 gives an other answer etc.
How can I plot this as a 3D plot with a surface with alf and gam as X and Y axes and the outcome Z axis.
if I try:
[gamM, alfM]=meshgrid(gam,alf);
surf(gamM,alfM,log10(T))
it gives me the error saying:
Error using surf (line 71)
Z must be a matrix, not a scalar or vector.
kind regards Nickel
7 件のコメント
Dyuman Joshi
2021 年 11 月 25 日
I can't see your code? Or did you mean, that you have included what I wrote in your code?
採用された回答
Dyuman Joshi
2021 年 11 月 25 日
I have modified your code -
clc;clear
eL=0;
eR=0;
gammaL=-2;
gammaR=-2;
aL=-0.1;
aR=-0.1;
E=linspace(-0,0.0001,1);
kL=acos((eL-E)/(2*gammaL));
kR=acos((eR-E)/(2*gammaR));
h=6.582119514*10^-16;
N = 3;
alf = [0, 0.03, 0.1, 0.5, 1, 1.5];
gam = [0, 0.03, 0.1, 0.5, 1, 1.5];
for i=1:6
for j=1:6
H = diag(gam(i).*ones(1,N-1),-1);
if N>2
H = diag(gam(i).*ones(1,N-1),-1)+diag(alf(i).*ones(1,N-2),-2);
else
H = diag(gam(i).*ones(1,N-1),-1);
end
H = H+H';
a=1;
b=N;
n=1;
g=(((E(n))*eye(length(H))-H))^-1;
gaa=g(a,a);
gbb=g(b,b);
gab=g(a,b);
gba=g(b,a);
vL=(2*gammaL*sin(kL(n)))/h;
vR=(2*gammaR*sin(kR(n)))/h;
gL=(exp(i*kL(n)))/(-gammaL);
gR=(exp(i*kR(n)))/(-gammaR);
sL=aL.^2*gL;
sR=aR.^2*gR;
d=1+sL*gaa+sR*gbb+sR*sL*(gaa*gbb-gab*gba);
t=i*h*sqrt(vL)*aL*gL*(gba/d)*gR*aR*sqrt(vR);
T(i,j)=[abs(t^2)]; %I would like to store the value of this T for every iteration
end
end
[gamM, alfM]=meshgrid(alf,alf);
surf(gamM,alfM,log10(T))
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Whos についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!