如何用matlab实现某年某月某日是星期几 我知道我编的程序已病入膏肓了、、求帮忙修改

作者&投稿:台彼 (若有异议请与网页底部的电邮联系)
刚刚开始学习MATLAB,下面是我编的程序,求某年某月某日是星期几,不知道哪里错了,求帮助,越详细越好~

function xingqi=myfun(year,month,day)
clc
%2000年1月1日星期六
dy=2*(year>=2000)-1;
y=2000:dy:year;
p=mod(y,400)==0 | mod(y,100)~=0 & mod(y,4)==0;
yue=[31 28+p(end) 31 30 31 30 31 31 30 31 30 31];
xingqi=mod(dy*sum(p((1:end-1)+(dy<0)))+365*(year-2000)+sum(yue(1:month-1))+day+5 ,7);
xingqi=xingqi+(xingqi==0)*7;
end

设要算的年份是x年,求一个数值S=(x-1)+[(x-1)/4]-[(x-1)/100]+[(x-1)/400]+C 。
(x-1)/4]表示为(x-1)/4的整数部分,不进位。
C表示从这一年的元旦算到你要算的那一天为止(包含那一天)的日数 。
最终除的得出的S除以7后,若整除就是星期天 若余数为1,就是星期一 依此类推。

function xingqi=day1234567(year,month,day)
%year:年,month:月,day:日,本函数可以算出这个日期是星期几
% 例如: day1234567(2013,10,22)
% 以2000年,1月1日为星期六为基点,前后都可以计算

%平年时1到12月份的前一个月的累计天数,[0 31 28 31 30 31 30 31 31 30 31 30]*triu(ones(12))
yue=[0,31, ...% 一月,二月的前一个月的累计天数
[59,90,120,151,181,212,243,273,304,334]+ ...% 本行会根据本年的闰年或非闰年+1或+0;加号必须在此行,不能在下一行,否则错
(mod(year,4)==0 & mod(year,100)~=0 | mod(year,400)==0)]; % 0是平年,1 是闰年 ;因为计算优先级的原因,注意加括号
run=year-(year>2000)-2000;% 意义见下面的***
xingqi=mod( ...
year-2000 ... %差的年数乘以365天:365*(x-2000) mod 7 = (x-2000) mod 7
... %***大于2000年时,闰年数从2000年算到前一年;小于等于2000年时,闰年数绝对值从本年算到2000年,但不包括2000年这个闰年***
+ fix(run/4)-fix(run/100)+fix(run/400)+(year>2000) ... %闰年数的代数值,包括正负号
+ yue(month) ... %从年初到前一个月的整月天数
+ day ... %本月的天数
-1+6-1,7)+1;% 减1号,加星期6,向前错位1,让星期1模7后变为0,...星期7模7后变为6,之后再向后错位1,变为星期1到星期7
end

不知道你只是想要这个功能,还是想自己写个算法来练习下,如果是前者,就不要重复造轮子了。Matlab早已提供了内置函数。

假设x, y, z分别表示年、月、日,则求星期几函数如下:

[index,d] = weekday(datenum([x y z]))

其中index表示是一周的第几天,d则是星期几的英文表示

如:

 [index,d] = weekday(datenum([2013 10 22]))
 index =

     3
  d =

  Tue



用matlab如何实现:有一矩阵A,找出矩阵中大于1的元素,并将它们排成列向 ...
A=randn(4)+1 B=sort(A(find(A>1)))A = 1.7283 2.0378 2.5532 2.8645 3.1122 0.6102 1.7079 0.6602 -0.3573 -0.3813 2.9574 -0.1398 -0.0226 1.3155 1.5045 0.7889 B = 1.3155 1.5045 1.7079 1.7283 2.0378 2.5532 2.8645 ...

怎么用matlab实现下标为i,j的双循环的加法?如求xij之和。i从1到6,j...
你的意思不就是求一个矩阵的所有元素和吗,直接使用sum(sum(x))即可!

如何用matlab实现多项式拟合?要源代码 。已有数据x=[...],y=...
clc clear xdata=[1.3,2.8,3.6,4.1,5.4,7.7,7.9,8.6,9.3,10.0];ydata=[2.7,9.9,16.5,24.7,54.3,150.6,163.9,208.5,263.1,325.0];a0 = [10,10,10,10]; %初始估计值 [a,resnorm]=lsqcurvefit(@myfun,a0,xdata,ydata) %lsqcurvefit为非线性最小二乘拟合 r...

有谁知道振幅调制和解调的原理,如何用MATLAB编程来实现?我是新手,很 ...
调用格式为如下两种方式:y=modulate(x,Fc,Fs,’method’)[y,t]=modulate(x,Fc,Fs)其中,x为被调信号,Fc为载波频率,Fs为信号x的采样频率,method为所采用的调制方式,若采用幅度调制、双边带调制、抑制载波调制,则'method'为'am’或'amdsd-sc'。其执行算法为:y=x*cos(2*pi*Fc*t)

求大神用代码实现一下这个优化模型,lingo跟matlab都可以
如何用matlab代码实现图中这个优化模型?分析题主给出的优化问题属于求最大值的极值最优化问题。该问题一般可以用fmincon函数来求解,也可以用ga遗传算法等函数来求解。如用fmincon函数来求解,可以按下列思路进行:一、利用三循环语句,创建目标函数, fmincon_fun(k),其主要内容为 y1=0;for i=1:n f...

matlab的实际意义
NANNotANumber就是代表不是一个数据经常用在下面两种情况1.数据处理时,在实际工程中经常数据的缺失或者不完整,此时我们可以将那些缺失设置为nan,Matlab处理缺失的数据时就会跳过或者其他处理——这个是Matlab优越于其他语言的表现之一。另外但读取数据时,某个字符不是数据,那么Matlab自动将它认为nan处理...

图中的曲线用MATLAB怎么实现
x=0:0.05:4;y1=2-exp(-2*(4*x+.3).^2);y2=cos(2*(3*x+.5)).*exp(-(3*x).^3);plot(x,y1,x,y2);xlim([0,4]);ylim([-1,3]);

应用MATLAB实现信号分析和处理编辑推荐
第4章和第5章聚焦滤波器设计和参数建模,分别介绍滤波器的基本概念、设计方法、模拟与数字滤波器,以及参数建模和谱分析的命令。在小波分析领域,第6章详细讲解小波变换、小波重构、小波包分析,以及如何利用MATLAB的小波工具箱进行信号和图像处理。每个章节都包含丰富的实例和功能详解,帮助读者不仅掌握MATLAB...

如何用matlab实现BOX
[transdat, lambda] = boxcox(data),用这个命令就可以实现,其中transdat为正态转换后的数据,lambda为变换参数λ,data为待转换的数据。

用MATLAB实现函数stepseq(n0,n1,n2)
function [x,n]=stepseq(n0,n1,n2)Generate x(n)=u(n-n0);n1<=n<=n2 [x,n]=stepseq(n0,n1,n2)STEP = 0.01;n = n1:STEP:n2;x = n > n0;

海丰县13484469896: 如何用matlab实现某年某月某日是星期几的问题, -
子车爱寒喘: function xingqi=week(year,month,day) clc % 2000年1月1日星期六 yue=[31, ...%一月的天数28+mod(year,400)==0 | mod(year,100)~=0 & mod(year,4)==0, ...% 2月份天数31 30 31 30 31 31 30 31 30 31]; ...% 3 - 12月份天数nian=year-1;%前一...

海丰县13484469896: matlab 中指定年份的第n天,怎么计算出它的日期,该用什么函数呢,或者有什么方法计算,求教. -
子车爱寒喘: 不知道函数就自己算吧 比如,1900年1月1日,星期一 那你就计算m年的第n天 首先计算1900到m有多少个闰年,从而计算1900年1月1日到m年的第n天有多少天 周几就mod 7计算得到 几月几号,就先计算m年1月1日到m年的第n天的天数计算

海丰县13484469896: 刚刚开始学习MATLAB,下面是我编的程序,求某年某月某日是星期几,不知道哪里错了,求帮助,越详细越好 -
子车爱寒喘: function xingqi=myfun(year,month,day) clc%2000年1月1日星期六 dy=2*(year>=2000)-1; y=2000:dy:year; p=mod(y,400)==0 | mod(y,100)~=0 & mod(y,4)==0; yue=[31 28+p(end) 31 30 31 30 31 31 30 31 30 31]; xingqi=mod(dy*sum(p((1:end-1)+(dy<0)))+365*(year-2000)+sum(yue(1:month-1))+day+5 ,7); xingqi=xingqi+(xingqi==0)*7; end

海丰县13484469896: 如何在matlab中实现对时间的操作 -
子车爱寒喘: N=(datenum(1990,1,1):datenum(2010,1,1))'; d=datestr(N,'yyyy-mm-dd')

海丰县13484469896: 输入某年某月某日,判断这一天是这一年的第几天? Input 第一行输入一个整数T,表示是下面有T行,接下来每 -
子车爱寒喘: #includeint main() { int day,i; int dd[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int y,m,d; int t; scanf("%d",&t); while(t--) { scanf("%d%d%d",&y,&m,&d); if(m>12) //月份大于12 { printf("0\n"); continue; } else if(((y%4==0 && y%100!=0) || y%400...

海丰县13484469896: 关于matlab得到系统时间 显示格式 -
子车爱寒喘: 三种表示格式 (1)日期字符串:NowDate=date NowDate =08-Aug-2008 year(NowDate) %提取日期的年份 ans = 2008 (2)连续的日期数值:离公元元年1月1日的天数 now ans =7.3363e+005 (3)日期向量:包括年、月、日、时、分和秒6个数值 clock ans =1.0e+003 * 2.0080 0.0080 0.0080 0.0160 0.0100 0.0027

海丰县13484469896: (4) 编写一个函数,实现在主函数中输入某年某月某日,能判断这一天是这一年的第几天?并在主函数中输出
子车爱寒喘: main() { int day,month,year,sum,leap; printf("\nplease input year,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)/*先计算某月以前月份的总天数*/ { case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case...

海丰县13484469896: 利用select语句显示昨天是某年某月某日,例如“昨天是2009年12月31日”. -
子车爱寒喘: SELECT '昨天是' + CAST(YEAR(GETDATE()-1) AS CHAR(4)) + '年' + CAST(MONTH(GETDATE()-1) AS VARCHAR(2)) +'月'+ CAST(DAY(GETDATE()-1) AS VARCHAR(2)) +'日'

海丰县13484469896: 我想用matlab做一个函数的曲线图,x轴显示的是时间(包括年,月,日),输入的时候怎么输入 -
子车爱寒喘: 举个例子,希望有所帮助. 代码 clc; clear all; close all; % Select a starting date: startDate = datenum('01-01-2009'); % Select an ending date: endDate = datenum('12-31-2009'); % Create xdata to correspond to the number of % months between ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网