查看: 149|回复: 4|关注: 0

[已解决] 编写一个函数,出错,原因:输入参数数量不足

[复制链接]

新手

18 麦片

财富积分


050


14

主题

44

帖子

0

最佳答案
编写了一个函数,出现错误提示:
输入参数的数目不足。
出错 kxian1 (line 2)
n=length(open);



为什么会这样,该怎样改动才可以


代码如下:
function K=kxian1(open,high,low,close)
n=length(open);
xt=1:1:n;
width=0.3;
for i=1:length(open)
    if open(i)<close(i) %红盘时利用line绘制红色空心的蜡烛图
    x=[xt(i)-width xt(i)+width xt(i)+width xt(i)-width xt(i)-width];
    y=[close(i) close(i) open(i) open(i) close(i)];
    line(x,y,'color','r');
    x=[xt(i) xt(i)];%绘制上影线
    y=[close(i) high(i)];
    hold on
    line(x,y,'color','r');
    x=[xt(i) xt(i)];%绘制下影线
    y=[low(i) open(i)];
    hold on
    line(x,y,'color','r');
    end
    if open(i)>close(i)%绿盘时利用fill绘制绿色实体的蜡烛图
    x=[xt(i)-width xt(i)+width xt(i)+width xt(i)-width];
    y=[close(i) close(i) open(i) open(i)];
    fill(x,y,'g','edgecolor','g');
    x=[xt(i) xt(i)];%绘制上影线及下影线
    y=[low(i) high(i)];
    hold on
    line(x,y,'color','g');
    end
    if open(i)==close(i)%绘制十字型的蜡烛图
         x=[xt(i)-width xt(i)+width];
         y=[close(i),close(i)];
         hold on
         line(x,y,'color','black');
         x=[xt(i) xt(i)];%绘制上影线及下影线
         y=[low(i) high(i)];
         hold on
         line(x,y,'color','black');
    end
end
for i=2:n
    if  high(i)==low(i) %绘制涨停板及跌停板
        if close(i)<close(i-1) %绘制跌停板
            x=[xt(i)-width xt(i)+width];
            y=[close(i),close(i)];
            hold on
            line(x,y,'color','g');
        end
        if close(i)>close(i-1)%绘制涨停板
            x=[xt(i)-width xt(i)+width];
            y=[close(i),close(i)];
            hold on
            line(x,y,'color','r')
        end
    end
end
end

回复主题 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

434 麦片

财富积分


50500


21

主题

250

帖子

51

最佳答案
  • 关注者: 6
发表于 2020-7-1 15:55:44 | 显示全部楼层 |此回复为最佳答案
请问你是怎样调用函数的呢!!!,open具体的值是什么,你不会是直接运行这个函数吧!!!
这是个函数,需要你有实际的参数去调用它,它本身不能执行。
直接运行的话才会提示你说的这个错误,因为open是内置函数。
回复此楼 已获打赏: 0 积分

举报

新手

18 麦片

财富积分


050


14

主题

44

帖子

0

最佳答案
 楼主| 发表于 2020-7-1 15:59:51 | 显示全部楼层
15631202458 发表于 2020-7-1 15:55
请问你是怎样调用函数的呢!!!,open具体的值是什么,你不会是直接运行这个函数吧!!!
这是个函数,需 ...

open是一列数组,您的意思是说,将open换成其他的???
回复此楼 已获打赏: 0 积分

举报

新手

18 麦片

财富积分


050


14

主题

44

帖子

0

最佳答案
 楼主| 发表于 2020-7-1 16:12:07 | 显示全部楼层
15631202458 发表于 2020-7-1 15:55
请问你是怎样调用函数的呢!!!,open具体的值是什么,你不会是直接运行这个函数吧!!!
这是个函数,需 ...

关键的是我在调用的时候,也会出现这样的情况:
调用 "kxian1" 时,未对输出参数 "K" (可能还包括其他参数)赋值。

出错 Kxian3 (line 10)
K=kxian1(open,high,low,close);
回复此楼 已获打赏: 0 积分

举报

新手

18 麦片

财富积分


050


14

主题

44

帖子

0

最佳答案
 楼主| 发表于 2020-7-1 17:27:41 | 显示全部楼层
15631202458 发表于 2020-7-1 15:55
请问你是怎样调用函数的呢!!!,open具体的值是什么,你不会是直接运行这个函数吧!!!
这是个函数,需 ...

问题解决了,因为这个函数是绘图,而不是返回一系列值,所以K要去掉,调用的时候,就不会报错了
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表