Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab isbusDay函数误差_Matlab - Fatal编程技术网

Matlab isbusDay函数误差

Matlab isbusDay函数误差,matlab,Matlab,我正在尝试在64位版本的Windows上执行一个程序matlab。程序的版本来源是: Matlab R2014b 我在上面运行程序的Matlab版本是: 7.10.0.499 (R2010a) 但我一直在犯这样的错误: Undefined function or method 'isbusday' for input arguments of type 'char'. 我的职能是: function [isHoliday]=detectJourFerie(num_jour,year)

我正在尝试在64位版本的Windows上执行一个程序matlab。程序的版本来源是:

Matlab R2014b
我在上面运行程序的Matlab版本是:

7.10.0.499 (R2010a)
但我一直在犯这样的错误:

Undefined function or method 'isbusday' for input arguments of type 'char'.  
我的职能是:

function [isHoliday]=detectJourFerie(num_jour,year)

j1=strcat('01 jan ',year);
j2=strcat('01 may ',year);
j3=strcat('08 may ',year);
j4=strcat('14 jul ',year);
j5=strcat('15 aug ',year);
j6=strcat('01 nov ',year);
j7=strcat('11 nov ',year);
j8=strcat('25 dec ',year);

holidays=[j1;j2;j3;j4;j5;j6;j7;j8];
t = datenum(strcat('01-jan-',year));
currentDay=datestr(addtodate(t, num_jour-1, 'day'));
isHoliday= isbusday(currentDay,holidays);

end

现在我不知道问题出在哪里了?

问题是,
isbusday
似乎不存在于您的安装中。也许你错过了这个机会


顺便说一句,我认为你的逻辑是错误的:最好使用
isHoliday=~isbusday(currentDay,holidays)

而且,安排约会也不是最好的;我会做以下几点:

function [isHoliday]=detectJourFerie(num_jour,year)

j1=datenum([year 1 1]);
j2=datenum([year 5 1]);
j3=datenum([year 5 8]);
j4=datenum([year 7 14]);
j5=datenum([year 8 15]);
j6=datenum([year 11 1]);
j7=datenum([year 11 11]);
j8=datenum([year 12 25]);

myholidays=[j1;j2;j3;j4;j5;j6;j7;j8];
% or just:
myholidays=cellfun(@(d)datenum([year d]), {[1 1]; [5 1]; [5 8]; [7 14]; [8 15]; [11 1]; [11 11]; [12 25]});

t = datenum([year 1 1]);
currentDay=addtodate(t, num_jour-1, 'day');
isHoliday=~isbusday(currentDay,myholidays);

end

因为从长远来看,
datevec
[2015 1]
)比
datestr
更容易处理,同时仍然可读,也更干净。从内部来看,datenum似乎是最干净的。

谢谢你的好建议,我添加了财务工具箱,但我一直都有这个问题datenum@Vampir这是什么问题?事实上,我的错误编译器是:
找不到64位编译器。这可能表示未安装“X64编译器和工具”或Microsoft Windows软件开发工具包(SDK)。为了构建64位MEX文件,微软Visual C++ 2008 Express版要求这两个包安装正确:。然而,我不明白为什么这里首先需要它们……在您最初的问题中,我假设您使用了字符串变量
year
,因为您使用了
strcat
,但是@glglgl的答案中的
datenum
给出了错误。对于datenum,您需要数字变量
year
。如果您使用strcat
,则会丢失空间,只需使用j1=['01 jan',year]。最后,您不应该将变量命名为
year
,因为
year
是Matlab的内置函数。