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

[已解决] function困扰人的小问题

[复制链接]

新手

9 麦片

财富积分


050


9

主题

18

帖子

0

最佳答案
两个矩阵h1和k1,使用下面的函数进行对齐,第一列为时间,第二列为价格。时间部分h1和k1一致,部分不一致。
function []=nest1()
if length(h1)~=length(k1)
[c,row_h,row_k]=intersect(h1(:,1),k1(:,1))
h1=intersect(h1,h1(row_h,:),'rows')
k1=intersect(k1,k1(row_k,:),'rows')
end
end
命令窗口中可以运行,但是在连续运行的时候出现这样的报错:
Undefined function or variable "h1".

Error in nest1 (line 2)
if length(h1)~=length(k1)
这是怎么回事
回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

中级

518 麦片

财富积分


5001500


2

主题

624

帖子

110

最佳答案
  • 关注者: 45
发表于 2015-2-28 21:46:00 | 显示全部楼层
你的h1没有定义 h1是什么
回复此楼 已获打赏: 0 积分

举报

新手

9 麦片

财富积分


050


9

主题

18

帖子

0

最佳答案
 楼主| 发表于 2015-2-28 21:48:56 | 显示全部楼层
atpalain 发表于 2015-2-28 21:46
你的h1没有定义 h1是什么

h1是一个矩阵,第一列为时间,第二列为价格。h1已经定义了,在命令窗口运行没有问题,在编入M文件运行时出现报错。
回复此楼 已获打赏: 0 积分

举报

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

入门

136 麦片

财富积分


50500


10

主题

273

帖子

27

最佳答案
  • 关注者: 1
发表于 2015-2-28 22:18:11 | 显示全部楼层 |此回复为最佳答案
哈哈布神 发表于 2015-2-28 21:48
h1是一个矩阵,第一列为时间,第二列为价格。h1已经定义了,在命令窗口运行没有问题,在编入M文件运行时 ...

在命令行运行时是没有问题,但是运行函数是你这个h1、k1没有传递进入函数。
可以改成function []=nest1(h1,k1)
调用 时也写成nest1(h1,k1)
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

24

主题

1万

帖子

1639

最佳答案
  • 关注者: 991
发表于 2015-2-28 23:18:13 | 显示全部楼层
当你在命令窗口运行没问题时,说明h1、k1已经存在于base workspace了,命令窗口运行使用的是base workspace,而function定义的函数使用的是独立的函数工作空间,base workspace的变量不会自动传入函数工作空间。如果函数想使用baseworkspace的变量,较简单的方式以参数形式传入函数。建议好好了解一下base和function workspace的区别

>> web(fullfile(docroot, 'matlab/matlab_prog/base-and-function-workspaces.html'))
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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