Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-07-05, 20:24   #1
me4047
初级会员
 
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17
me4047 正向着好的方向发展
默认 [求助]画不出图来!

请现看看我写的程序

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的图像呢 ?

感谢先
me4047 当前离线   回复时引用此帖
旧 2008-07-06, 13:13   #2
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认

楼主,你那是作图程序吗?
mathjiang 当前离线   回复时引用此帖
旧 2008-07-07, 03:11   #3
me4047
初级会员
 
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17
me4047 正向着好的方向发展
默认

是个公式
不过也要画这个公式的图象啊!
me4047 当前离线   回复时引用此帖
旧 2008-07-08, 08:56   #4
remnant
普通会员
 
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19
remnant 正向着好的方向发展
默认

... ...
看来你对maltab绘图还没什么认识,给你个
基础入门的绘图教程吧。中文的。

压缩包解压后里面有个index.html,打开这个就是目录,点击目录可以浏览。
上传的附件
文件类型: rar matlab语法与绘图基础.rar (231.2 KB, 15 次查看)
remnant 当前离线   回复时引用此帖
旧 2008-07-08, 21:04   #5
me4047
初级会员
 
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17
me4047 正向着好的方向发展
默认

引用:
作者: remnant 查看帖子
... ...
看来你对maltab绘图还没什么认识,给你个
基础入门的绘图教程吧。中文的。

压缩包解压后里面有个index.html,打开这个就是目录,点击目录可以浏览。
还没看,先谢谢!
me4047 当前离线   回复时引用此帖
旧 2008-07-08, 21:23   #6
me4047
初级会员
 
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17
me4047 正向着好的方向发展
默认

其实这些命令我都知道!
但是我现在的问题是,我的变量是在for的循环里面,画出来到图总是一个点!

比如说,for h=1:10,
但是画出来 的图就是h=10的时候根本没有别的!
me4047 当前离线   回复时引用此帖
旧 2008-07-08, 23:56   #7
remnant
普通会员
 
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19
remnant 正向着好的方向发展
默认

引用:
作者: me4047 查看帖子
其实这些命令我都知道!
但是我现在的问题是,我的变量是在for的循环里面,画出来到图总是一个点!

比如说,for h=1:10,
但是画出来 的图就是h=10的时候根本没有别的!
你这个小程序写的问题非常多,一个一个来:
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出来就可以。
remnant 当前离线   回复时引用此帖
旧 2008-07-09, 01:58   #8
me4047
初级会员
 
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17
me4047 正向着好的方向发展
默认

引用:
作者: remnant 查看帖子
你这个小程序写的问题非常多,一个一个来:
function f=ps(M,h,k,sn) % h, k, sn 为函数的形参,但你却在下面再次给它们赋值,那么你把它
% 们写在形参list里又有什么意义呢?

for ...
:biggrin:

先感谢, 再看帖!

:biggrin:
me4047 当前离线   回复时引用此帖
旧 2008-07-09, 15:53   #9
me4047
初级会员
 
注册日期: 2008-05-27
年龄: 43
帖子: 21
声望力: 17
me4047 正向着好的方向发展
默认

老大
看了半天我也没看明白哪里出问题了,算来算去,不管M是多少,答案都是一样的啊!

冥思苦想中................
me4047 当前离线   回复时引用此帖
旧 2008-07-10, 13:48   #10
remnant
普通会员
 
注册日期: 2008-04-12
年龄: 46
帖子: 67
声望力: 19
remnant 正向着好的方向发展
默认

这个要看你的题目是什么了,也就是你的程序要完成什么function.
从你的程序里看到,每次取一个h,然后sn 从1循环到10。每个sn计算出1个f。
remnant 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[资料]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


所有时间均为北京时间。现在的时间是 06:41


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.