我试图在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
现在我不知道问题出在哪里了?
答案 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
似乎是最干净的。