matlab程序没报错,但是出来的图片是一条直线

clc;
BW = 1e6;
Pcir =188*1e-6;
E0=1e-4;
pe=1e-3;
G0 =-70; G0 = 10^(G0/10);
N0 = -140; N0= (10^(N0/10))*1e-3;
a=0.4;c1=0.2;c2=1.6;c3=1;c4=1;
d1=1000;d2=5000;
h1 = G0*d1.^(-3);
h2 = G0*(d2-d1).^(-3);
G1 = h1/N0;
G2 = h2/N0;
gt = 1/sqrt(G1)+1/sqrt(G2);

M=[5:5:50];
for i=1:length(M)
gamma = [(2.^(c3*M-c4))/c2]*log(c1/pe);
EE(M)=(a*BW*M)/((gt.^2)*gamma+4*a*Pcir+a*BW*E0*(2.^M));
plot(M,EE(M));
end

clc;

clear,close all

BW = 1e6; 

Pcir =188*1e-6; 

E0=1e-4;

pe=1e-3;

G0 =-70;  G0 = 10^(G0/10);

N0 = -140;  N0= (10^(N0/10))*1e-3;

a=0.4;c1=0.2;c2=1.6;c3=1;c4=1;

d1=1000;d2=5000;

h1 = G0*d1.^(-3);

h2 = G0*(d2-d1).^(-3);

G1 = h1/N0;

G2 = h2/N0;

gt = 1/sqrt(G1)+1/sqrt(G2);


M=[5:5:50];

for i=1:length(M)

    gamma = ((2.^(c3*M(i)-c4))/c2)*log(c1/pe);

EE(i)=(a*BW*M)/((gt.^2)*gamma+4*a*Pcir+a*BW*E0*(2.^M));

% plot(M,EE(M)),hold on;

end

figure,plot(M,EE)

追问

EE(i)=(a*BW*M(i))/((gt.^2)*gamma+4*a*Pcir+a*BW*E0*(2.^M(i)))是否要这样修改

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-16

M=[5:5:50];  

for i=1:length(M)

    gamma = [(2.^(c3.*M(i)-c4))/c2]*log(c1/pe);

    EE=(a*BW.*M(i))/((gt^2).*gamma+4*a*Pcir+a*BW*E0.*(2.^M(i)));

    EEdata(i) = EE;


end

plot(M,EEdata);

最后一段代码还是修改一下吧。。我出的图

也不知道对不对,最后一个小建议,在你进行循环计算的时候,最好建立一个空的矩阵,将你每次循环算的数据存到新的矩阵里面,这样可能会好一些

追问

理论分析应该是一个抛物线的形式,有一个最优点能达到最大值

Matlab指数拟合问题:谁能帮我看看为什么画出来的图像函数部分是一条直线...
问题就出在exp(-a(3)*x)上 ,由于x的值都很大,因此exp(-a(3)*x)在超过了matlab的最小数,因此matlab显示的是0。所以当你用拟合的曲线计算在x出的值时,都等于a(1)了,因为后面的等于零。因此你画出的图像就是直线了。我试了一下确实如此。>> exp(-1790)ans = 0 还有个原因,即使...

matlab程序没报错,但是出来的图片是一条直线
clear,close all BW = 1e6;Pcir =188*1e-6;E0=1e-4;pe=1e-3;G0 =-70; G0 = 10^(G0\/10);N0 = -140; N0= (10^(N0\/10))*1e-3;a=0.4;c1=0.2;c2=1.6;c3=1;c4=1;d1=1000;d2=5000;h1 = G0*d1.^(-3);h2 = G0*(d2-d1).^(-3);G1 = h1\/N0;G2...

用matlab输出图像为一条直线
在axis([0 5 -1 1])前面,加上下列语句,即可。hold on,plot(0:0.01:5,0,'r-')效果如下:

matlab仿真输出波形为一条直线怎么办
1、检查仿真设置:确保您的仿真设置正确。检查仿真步长和仿真时间的设置是否适当。当步长设置得太大,会导致波形失真或丢失细节;当仿真时间设置得太短,无法观察到完整的波形。调整参数,使其适合您的仿真需求。2、检查连接错误:检查您的电路模型中的连接是否正确。确保元件之间的连接正确无误,没有短路或...

matlab 绘制出的图像是一条直线
你这个程序错处有:1。h1=ezplot(aa11,[0:5000]);h2=ezplot(aa33,[0:5000]);这两句都不要用ezplot,用plot就行了。2。aa11,aa33都是一个数,不可能与0:5000相配画出图形的。只有使aa11,aa33变成矢量才能画出图。

为什么模拟出来是一条直线?
根据您提供的 MATLAB 代码,您在进行数据拟合的时候使用了一次多项式 (linear polynomial)。一次多项式是指一个未知数的最高次幂为 1 的多项式函数,通常的表达式为 y = a*x + b。这样的拟合会得到一个直线,因此在画出拟合曲线时看到的就是一条直线。在这个例子中,您使用了一次多项式对时间 (t)...

请教MATLAB一个画图问题:改变了步长,为什么画的图还是一条直线?
x=-3:0.01:3;y=(sin(x)+x).\/((x-cos(x).^2+1\/10))+(cos(x)+x).\/((x-sin(x)).^2+1\/5);plot(x,y);注意 矩阵中 点乘 和 点除 的用法。。。

matlab的进化曲线是一条直线是怎么回事
出现matlab的进化曲线是一条直线的情况,其原因有三。1、数据问题;2、拟合模型问题;3、拟合初值及拟合函数选择问题。所以,你最好把数据贴出来或用其他方式传给我。

用matlab来画函数z.(不知道为啥我画出来的只是一条直线,)要编程。谢 ...
三维简化画法。m文件如下 ezsurf('4*((x-0.5)^2+(y-0.5)^2)^2-4*((x-0.5)^2+(y-0.5)^2)+1')结果:

用matlab r=-1.0828*10^-5 y=23*exp(r*x) 为什么画出图是一条直线啊
syms x r=-1.0828*10^-5;y=23*exp(r*x);ezplot(y,[-1000000 -2000000])

相似回答