clear all;
clc;
Year = input('请输入年份:');
Month = input('请输入月份:');
Day = input('请输入日:');
M = [31;28;31;30;31;30;31;31;30;31;30;31];
if (rem(Year, 100) ~= 0 && rem(Year, 4) == 0) || rem(Year, 400) == 0 %if语句后不用加分号。为了可读性增加括号
M(2) = M(2) + 1;
end
sum_Day = cumsum([0; M]);%通过在M数组前加入一个0,得到一个新的0向量[0,M]。因为不要累计当月日子。累计的结果储存在sum_Day向量中。
%也可以写作sum_Day=[0,cumsum(M)],
N = sum_Day(Month) + Day;%通过月份数值调用sum_Day中的累计和再加上天数。sun_Day向量比M向量多1。
fprintf('%d年%d月%d日是这一年的第%d天', Year, Month, Day, N);
1、matlab中取余运算符rem,mod的区别
在 MATLAB 中,rem(a, b)
函数是用来计算 a
除以 b
的余数(即取模)。
该函数有两个输入参数 a
和 b
,表示被除数和除数。返回值是 a
除以 b
的余数。
以下是 rem()
函数的使用示例:
a = 10; b = 3;
result = rem(a, b);
disp(result); % 输出为 1
区别:
在 MATLAB 中,mod()
和 rem()
函数在处理正数时结果是相同的,它们返回的是除法的余数(取模)。
但在处理负数时,它们的行为是不同的:
mod(a, b)
函数返回的余数与被除数a
的符号相同。例如,mod(-10, 3)
的结果是 -1,与被除数-10
的符号相同。rem(a, b)
函数返回的余数与除数b
的符号相同。例如,rem(-10, 3)
的结果是 2,与除数3
的符号相同。
% mod() 函数
disp(mod(-10, 3)); % 输出 2
disp(mod(10, 3)); % 输出 1
% rem() 函数
disp(rem(-10, 3)); % 输出 -1
disp(rem(10, 3)); % 输出 1
对于正数的取模运算,mod()
、rem()
和 %
都得到相同的结果。不能使用%进行取余运算,这是注释符号。
2.累计求和函数cumsum
cumsum()
函数是 MATLAB 中常用的函数之一,用于计算向量元素的累计和(即前缀和)。
具体来说,cumsum()
函数将输入向量的第 i 个元素与前面所有元素的和累加,得到一个长度等于输入向量的向量。例如,对于向量 [1, 2, 3, 4]
,其 cumsum()
的结果为 [1, 3, 6, 10]
,即第一个元素保持不变,第二个元素为前两个元素之和,第三个元素为前三个元素之和,以此类推。
下面是使用 cumsum()
函数的示例代码:
x = [1, 2, 3, 4];
y = cumsum(x);
disp(y); % 输出 [1, 3, 6, 10]
此外,cumsum()
函数还有其他用法,可以通过输入矩阵或者指定维度来计算矩阵元素的累计和。对于矩阵的累计和,cumsum()
函数会按列进行累计求和。
例如,对于矩阵 [1, 2; 3, 4]
,其 cumsum()
的结果为 [1, 2; 4, 6]
,表示第一列保持不变,第二列为第一列和第二列的和。。
下面是使用 cumsum()
函数计算矩阵元素累计和的示例代码:
A = [1, 2; 3, 4];
B = cumsum(A, 1); % 1表示按列计算累计和
C = cumsum(A, 2); % 2表示按行计算累计和
disp(B); % 输出 [1, 2; 4, 6]
disp(C); % 输出 [1, 3; 3, 7]
这段代码中,第一次调用 cumsum()
函数按列计算矩阵元素的累计和,得到矩阵 [1, 2; 4, 6]
;第二次调用 cumsum()
函数按行计算矩阵元素的累计和,得到矩阵 [1, 3; 3, 7]
。
当进行按行计算累计和时,cumsum()
函数会按照行的顺序,对每一行的元素进行累计求和操作。
对于矩阵 A = [1, 2; 3, 4]
进行按行计算累计和的操作如下:
对于第一行 [1, 2]
,累计和为 [1, 1+2] = [1, 3]
。 对于第二行 [3, 4]
,累计和为 [3, 3+4] = [3, 7]
。
因此,按行计算累计和的结果为矩阵 C = [1, 3; 3, 7]
。
当进行按列计算累计和时,cumsum()
函数会按照列的顺序,对每一列的元素进行累计求和操作。
对于矩阵 A = [1, 2; 3, 4]
进行按列计算累计和的操作如下:
对于第一列 [1; 3]
,累计和为 [1; 1+3] = [1; 4]
。 对于第二列 [2; 4]
,累计和为 [2; 2+4] = [2; 6]
。
因此,按列计算累计和的结果为矩阵 B = [1, 2; 4, 6]
。