Matlab isbusDay函数错误

时间:2015-05-19 11:41:29

标签: 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)

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

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

1 个答案:

答案 0 :(得分:0)

问题是您的安装中似乎不存在isbusday。可能你错过了needed Financial Toolbox

顺便说一下,我认为你的逻辑是错误的:更好地使用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 1])更易于处理,同时仍然可读且比datestr更清晰。在内部,datenum似乎是最干净的。