Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17 ![]() |
![]()
请现看看我写的程序
function f=ps(M,h,k,sn) for h=0:13 for sn=1:10 y=0; for k=0:M-h pe=erfc(sqrt(sn))/2; d=nchoosek (M,k).*((1-pe).^(M-k)).*pe.^k; y=y+d; end pm=1-y; z=0; for k=0:h c=nchoosek (M,k); z=y+c; end pf=z.*(1/2).^M; ps=pm+pf end end 我费劲心血写出来的,不要笑话我啊:sweat: 我现在虽然能写出来ps的答案,但是画不出图啊! 请问怎么样才可以画出一个ps和h的图像呢 ? 感谢先 |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-01-02
帖子: 247
声望力: 22 ![]() |
![]()
楼主,你那是作图程序吗?
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17 ![]() |
![]()
是个公式
不过也要画这个公式的图象啊! |
![]() |
![]() |
![]() |
#4 |
普通会员
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19 ![]() |
![]()
... ...
看来你对maltab绘图还没什么认识,给你个 基础入门的绘图教程吧。中文的。 压缩包解压后里面有个index.html,打开这个就是目录,点击目录可以浏览。 |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17 ![]() |
![]() |
![]() |
![]() |
![]() |
#6 |
初级会员
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17 ![]() |
![]()
其实这些命令我都知道!
但是我现在的问题是,我的变量是在for的循环里面,画出来到图总是一个点! 比如说,for h=1:10, 但是画出来 的图就是h=10的时候根本没有别的! |
![]() |
![]() |
![]() |
#7 | |
普通会员
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19 ![]() |
![]() 引用:
function f=ps(M,h,k,sn) % h, k, sn 为函数的形参,但你却在下面再次给它们赋值,那么你把它 % 们写在形参list里又有什么意义呢? for h = 0:13 for sn = 1:10 y = 0; for k = 0:M-h pe = erfc( sqrt(sn) ) / 2; d = nchoosek(M,k).*( (1-pe).^(M-k) ).*pe.^k; y = y + d; end pm = 1 - y; z=0; for k = 0:h c = nchoosek( M, k ); z = y + c; end pf = z.*(1/2).^M; ps = pm + pf % 你这个函数名是ps,定义了一个返回值f,这里却给函数名赋值?如果这里 % 加上分号,那你就连ps都看不到了。 end end ========================================================= 下面是我简单修改了的,为了方便你看懂,没有改你的程序结构,只出于解决你的问题略作修改 function [h, f] = ps( M ) h = 0:13; % h 已知,这里直接定义为数组,下面采用h(i)的方式顺序访问h中的元素。 j = 1; % 返回值f是个数组,长度我不知道,定义个 j 进行loop自增。 for i = 1:length(h) for sn = 1:10 y = 0; for k = 0:M-h(i) pe = erfc( sqrt(sn) ) / 2; d = nchoosek(M,k).*( (1-pe).^(M-k) ).*pe.^k; y = y + d; end pm = 1 - y; z=0; for k = 0:h(i) c = nchoosek( M, k ); z = y + c; end pf = z.*(1/2).^M; f(j) = pm + pf; % 给返回值 f 赋值,f 必然是个数组 j = j + 1; end end %% 完毕,在命令行里输入[ h, f ] = ps( M的值 ) 即可运行,返回 h 和 f。但是,这里依然是没法绘图的,因为由程序可以看出 1个 h 会有 10 个f 输出,我不了解你的程序意图,不敢说我这里逻辑是对的,但程序本身已经可以运行并返回你想要的两组值,你仔细想想修改一下,plot出来就可以。 |
|
![]() |
![]() |
![]() |
#8 |
初级会员
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17 ![]() |
![]() |
![]() |
![]() |
![]() |
#9 |
初级会员
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17 ![]() |
![]()
老大
看了半天我也没看明白哪里出问题了,算来算去,不管M是多少,答案都是一样的啊! 冥思苦想中................ |
![]() |
![]() |
![]() |
#10 |
普通会员
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19 ![]() |
![]()
这个要看你的题目是什么了,也就是你的程序要完成什么function.
从你的程序里看到,每次取一个h,然后sn 从1循环到10。每个sn计算出1个f。 |
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[资料]mathematica全美经典教程 | kushugmail | Mathematica论坛 | 42 | 2024-10-07 17:34 |
怎样将一次神经网络训练后的权值和阈值作为下一次训练的初始权值和阈值 | xuwei_020561 | MATLAB论坛 | 2 | 2008-11-28 09:27 |
[求助]有没有人用过TiePie公司的数据采集卡HS3 | zibing | MATLAB论坛 | 1 | 2008-05-07 15:36 |
[求助]信号分析的。。。。 | 107665111 | MATLAB论坛 | 0 | 2008-04-30 10:13 |
【讨论】今天做实验用imwrite函数发现显示的象素没变啊 | cathy | MATLAB论坛 | 0 | 2008-04-03 16:47 |