浏览:4188 回答:4

r=-0.01:0.001:0.01;
pef=2^2;
a=1000;
MATLAB大神帮帮我呀!,我想仿一个公式,代码如下,没有错误,但是显示不出图片。什么原因呢
x=r*a;
x_high=x.^2;%分母
y_b=besselj(2,x);%贝塞尔函数
y_d=y_b/x_high;
y_g=gamma(2+1);%伽马函数
E=pef*y_g*y_d;
E1=abs(E);
I=E1^2;
figure
plot(r,I);
%坐标轴及其名称设置
axis();
xlabel('r');
ylabel('I(r,z=0)');
%%title('0阶、一阶、二阶第一类贝塞尔函数曲线图');
%%legend('0阶','一阶','二阶');
%%set(h,'LineSmoothing','on');

邀请回答 我来回答

全部回答

(4)
默认 最新
何如成
1 点乘是数组的运算,不加点是矩阵的运算;2 点乘要求参与运算的两个量两必须是维数相同,是对应元素的相乘; 而不加点表示的是矩阵相乘(除的时候通过逆矩阵来实现),要求内维相同,也就是前一个矩阵的列的维数等于后一个矩阵的行 的维数。{这里在补充一个matlab点和点乘的区别,楼主可以看一下}
2016年1月13日
评论 点赞
何如成
r=-0.01:0.001:0.01; pef=2^2; a=1000; x=r*a; x_high=x.^2;%分母 y_b=besselj(2,x);%贝塞尔函数 y_d=y_b./x_high; y_g=gamma(2+1);%伽马函数 E=pef*y_g*y_d; E1=abs(E); I=E1.^2; figure plot(r,I); %坐标轴及其名称设置 axis(); xlabel('r'); ylabel('I(r,z=0)'); %%title('0阶、一阶、二阶第一类贝塞尔函数曲线图'); %%legend('0阶','一阶','二阶'); %%set(h,'LineSmoothing','on'); 经过验证楼上的是可以出现结果的
2016年1月13日
评论 点赞
许昌平
y_d=y_b/x_high; I=E1^2; 稍微看来一下你的代码,估计你是想要这样,将上面的两行代码写成下面。注意点乘点除跟乘除是不一样的! y_d=y_b./x_high; I=E1.^2;
2016年1月13日
评论 点赞
许昌平
plot(r,I);中,r是1*21的行向量,I为1*1的标量,当然画不出了。不知道你的I是什么量。 plot(r,I*ones(1,length(r))这样就可以画出来了,可是应该不是你想要的,因为纵坐标就变成了一个常量。 主要问题在于维数不对!
2016年1月13日
评论 点赞

没解决?试试专家一对一服务

换一批