matlab plot绘图,求教高人
发布网友
发布时间:2022-05-14 14:58
我来回答
共2个回答
热心网友
时间:2023-10-21 15:25
是nchoosek(n,m)这个函数使用时参数设置不当所造成的问题
nchoosek(n,m)表示从n各元素中取m个元素的所有组合数,其中n可以是具体的一个非负的整数值,也可以是一个含有多个非负的整数值元素的向量,但是m必须是不大于n的一个非负的整数值.
程序可以修改为
detap=0.02;
N=100;
p=0:0.01:0.5;
q = detap./(1-4*p/3);
M = round(4*q*N/3);
for i=1:length(M)
nk(i) = (log(nchoosek(N,M(i))))./log(2)+2*M(i);
end
K=nk/N;
plot(p,K,'b'),grid
最后建议 natureperfect 遇见类似问题是可以通过help命令自己查的nchoosek函数的用法
参考了wacs5的解答
参考资料:参考了wacs5的回答
热心网友
时间:2023-10-21 15:25
nchoosek的用法有点问题:
nchoosek(100,35)是没有问题的。
nchoosek(1:100,3)也是没有问题的。
但
nchoosek(100,[3,4])有问题
像这种情况只能用for了。
detap=0.02;
N=100;
p=0:0.01:0.5;
q = detap./(1-4*p/3);
M = round(4*q*N/3);
for i=1:length(M)
nk(i) = (log(nchoosek(N,M(i))))./log(2)+2*M(i);
end
K=nk/N;
plot(p,K,'b'),grid