c“一百分高分悬赏,答对还有追加”(请问MATLAB高手一个如何实现一个迭加函数画图问题)

如何实现一个的二维图形显示大家过来帮帮忙啊想实现一个迭加函数的二维图形显示,坐标为函数自变量和函数本身函数如下:functions=fun1(m)s=0;fork=0:m... 如何实现一个的二维图形显示

大家过来帮帮忙啊

想实现一个迭加函数的二维图形显示,坐标为函数自变量和函数本身

函数如下:
function s=fun1(m)
s=0;
for k=0:m
s=s+m*binopdf(k,100,0.01); % binopdf为一个二项分布概率函数
end;

命令栏输入
m=0:50;
y=[y,fun1(m)];
plot(m,y)

输出图像始终为一条水平线,怀疑图形输出时的函数值不随自变量的变化而变化,始终为恒值

可一直找不出修改的办法

请各位 路过的大虾们能为小生指点迷津,小生在此感激不尽!!
展开
百度网友75a2317
2008-12-24 · 超过32用户采纳过TA的回答
知道答主
回答量:189
采纳率:0%
帮助的人:130万
展开全部
你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)

你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)
csg974
2008-12-24 · TA获得超过5020个赞
知道小有建树答主
回答量:915
采纳率:0%
帮助的人:1352万
展开全部
你的函数参数要求是数值,但命令行输入的时候给函数传递的是一个向量0:50。

所以函数内部在for循环那里,for k=0:m里面的m代入的是向量,
那么matlab自动取矩阵的第一个元素,你这里是0,
所以就变成for k=0:0,等于没循环。
因此最后结果只有s=0

解决办法,
一种可以在命令行输入for循环求y。
>>m=0:50;
>>y=[];
>>for k=1:length(m)
y(k)=fun1(m(k));
end
>>plot(m.y)

第二种办法,把函数改写了,参数按矩阵来算。
function s=fun1(m)
s=zeros(size(m));
for k=1:numel(m)
a=m(k)*binopdf(0:m(k),100,0.01);
s(k)=sum(a(:));
end;
这样函数就可以接受矩阵了。

然后在命令行输入
>>m=0:50;
>>y=fun1(m);
>>plot(m,y)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式