[英]Plot function in 2D intensity plot in matlab
我正在尝试将函数可视化为更直观的颜色编码图,该图可用于图像中。 我试图可视化荧光蛋白可以有效地将能量从一种转移到另一种的范围。 在此过程中一个非常重要的因素是两种蛋白质之间的距离。 因此,我想在这些蛋白质之一的顶部绘制能量转移的理论图,作为距离的函数。 我想要一个2D强度图,可以将其用于蛋白质模型中。
描述有效能量传递的函数是:
E = R ^ 6 /(R ^ 6 + r ^ 6)
E =能量转移效率
R =福斯特距离有50%的机会转移
r =荧光蛋白之间的实际距离
r的低值导致E的高值,意味着能量有效传递->绿色r的高值导致E的低值,能量传递效率不高->红色
我的问题是,是否有人可以帮助我将图形转换为颜色编码的圆圈,其中圆圈的中部对应于高E(绿色),并且边框更加红色。
到目前为止,我尝试了mesh + surf函数,但是这些需要矩阵,因此不起作用。
感谢您的帮助,感谢您的答复!
干杯,赖尼尔
如果我理解正确的话
[R r] = meshgrid( 0.1:0.1:5 ); % define 2D inputs
E = (R.^6)./( R.^6 + r.^6 ); % compute 2D function
figure;
surf( R, r, E, 'EdgeColor','none'); % plot using surf
xlabel('R');
ylabel('r');
colormap( [ 1:-0.05:0; 0:.05:1; zeros( 1, numel(0:.05:1) )]' ); % colormap red->green
你得到的是
如果要绘制带有r(x,y) = || x - y ||
的2D函数E( x,y ; R=5.1 )
r(x,y) = || x - y ||
那你可以试试
[X Y] = meshgrid(-120:1:120); % x,y range -120:120 nm
r = sqrt( X.^2 + Y.^2 );
R=5.1; % fixing R to 5.1 nm
figure;
surf( X, Y, (R.^6)./( R.^6 + r.^6 ), 'EdgeColor','none');
xlabel('X[nm]');
ylabel('Y[nm]');
zlabel('E');
colormap( [ 1:-0.05:0; 0:.05:1; zeros( 1, numel(0:.05:1) )]' );
colorbar;
这样的话,你会得到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.