楼主: 409560013
5599 21

[Minitab] 请教matlab高手:这行代码为什么错了? [推广有奖]

  • 1关注
  • 0粉丝

已卖:305份资源

本科生

62%

还不是VIP/贵宾

-

威望
0
论坛币
542 个
通用积分
0.2203
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1522 点
帖子
107
精华
0
在线时间
74 小时
注册时间
2007-5-15
最后登录
2017-2-16

楼主
409560013 发表于 2009-7-26 00:16:36 |AI写论文
500论坛币
matrix_function.rar (523 Bytes) 本附件包括:
  • matrix_function.m

%matrix_function.m
%
%Used when  past expectations are present
%
%This program uses the strings A_j,B_j,C_j,F_j,G_j, and it_name to
%construct MATLAB anonymous functions for calculations involving
%A_j,B_j,C_j,F_j and G_j for any j
%
%THIS VERSION: 0.1 October 30, 2007
%
%Copyright: Alexander Meyer-Gohde
%
%You are free to use/modify/redistribute this program so long as original
%authorship credit is given and you in no way impinge on its free
%distribution
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


for matj=[65,66,67,70,71]
eval(sprintf('eval([''target=%s_j;''])',char(matj)))
eval(sprintf('eval([''%s_j=@(%s)%s;''])',char(matj),it_name,target))
end


请高手指点迷津:红色部分的代码为什么错了?怎样修改?

Error in ==> ..\linlagex\matrix_function.m
On line 23  ==> eval(sprintf('eval([''%s_j=@(%s)%s;''])',char(matj),it_name,target))

这是matlab的提示。

M文件在附件中。

我要对货币政策的模型进行数值模拟。模型中要求解前瞻性变量,我找到求解的代码(这仅仅是求解文件中的一个),但是运行的时候总是出错。我对matlab了解不是很多,但是这些模型深刻而完美地体现了经济运行规律,我必须对它们求解。技术问题,一个难关,很是头痛。

   为了使问题更加清楚,我把求解程序包附上,而且附上一个例子。请高手告诉我,究竟什么地方出错啊?  怎样改正?

linlagex.rar
下载链接: https://bbs.pinggu.org/a-364703.html

22.43 KB

example.rar

1.06 KB

本附件包括:

  • example.m

input_example_mankiw_reis_2006.rar

1.58 KB

本附件包括:

  • input_example_mankiw_reis_2006.m

关键词:MATLAB matla atlab Atl Lab 请教 MATLAB 高手 代码

沙发
denialme 发表于 2009-7-26 11:20:23
你的程序我见过。
源程序应该是这样的(没有斜杆'\'的),不知道你的怎么变了,我怀疑是你从网页上拷贝的时候出问题了。

for matj=[65,66,67,70,71]
eval(sprintf('eval([''target=%s_j;''])',char(matj)))
eval(sprintf('eval([''%s_j=@(%s)%s;''])',char(matj),it_name,target))
end

藤椅
denialme 发表于 2009-7-26 12:27:48
另外也有可能是你的进口程序不对。
有一些量还没有定义,这里就是 it_name, target这两个量了。
你可以检查一下workspace里面有没有这两个变量。
在command window直接输入it_name或者target,然后回车即可。

板凳
409560013 发表于 2009-7-26 12:28:06
是复制的时候出错了,才会有斜杠,我已经改正了。原始的M文件你可以在附件中找到。我把求解的文件包附上,请问我的例子怎样运行啊?
       先感谢啦!真是救命恩人啊!

报纸
409560013 发表于 2009-7-26 12:31:54
it_name和target在我使用的例子里面(已经附上)已经含有,已经定义了:
it_name =
J_1
>> target
target =
[zeros(6,6)]

地板
denialme 发表于 2009-7-26 18:03:23
我用的是matlab7,且没有安装完整。
运行你提供的代码,在你所说的地方并没有出现错误。
运行到后面确实是有地方出错了,因我安装的matlab7 没有ordeig函数。
我将ordeig用eig代替,但其求解的特征值有问题,这可能导致后续程序出错,
因此我最终无法完全运行你的程序,很遗憾。

请注意,原作者使用的是matalb 2007ra版本,你最好采用该版本以上的matlab。
而且他也提供了相应的例子,如果你能够正常运行他的例子,请检查你自己的"例子.m"程序。

特别地,matlab对中文支持不是很好,你的文件名也不用要中文名了。

7
409560013 发表于 2009-7-28 20:59:46
谢谢denialme 的帮助!
    ordeig这个函数也有点问题。
    我是用matlab6.5,所以可能有些问题。在我的电脑上到这里就出问题了:
Error in ==> ..\linlagex\matrix_function.m
On line 23  ==> eval(sprintf('eval([''%s_j=@(%s)%s;''])',char(matj),it_name,target))
        我的例子是没有问题的。我试过了其他很准确的例子但是还是出问题。
    还得再试试,总是出问题。
    谢谢你!怎样把论坛币转给你?

8
409560013 发表于 2009-7-28 21:04:10
我另外附上了一个例子。

9
denialme 发表于 2009-7-29 20:30:12
7# 409560013
这样我只能建议你安装高版本的matlab了。
如果你在学校里,下载一个不会太困难了。

10
denialme 发表于 2009-7-29 20:45:36
这个语句在matlab7里面是没有问题的。很有可能是mtlab6.5 还不支持@这种方式。
你在command window里面 输入以下命令试试(最好用复制,因为中间有空格):
sqr = @(x) x.^2;
如果出错,即说明matlab6.5 还不支持@。
409560013 发表于 2009-7-28 20:59
谢谢denialme 的帮助!
    ordeig这个函数也有点问题。
    我是用matlab6.5,所以可能有些问题。在我的电脑上到这里就出问题了:
Error in ==> ..\linlagex\matrix_function.m
On line 23  ==> eval(sprintf('eval([''%s_j=@(%s)%s;''])',char(matj),it_name,target))
        我的例子是没有问题的。我试过了其他很准确的例子但是还是出问题。
    还得再试试,总是出问题。
    谢谢你!怎样把论坛币转给你?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 04:22