有没有一种方便的方法可以在没有循环的情况下多次调用函数



我目前正在编写一些代码,以随机生成一组随机日期,并将它们分配给矩阵。我希望随机生成N个日期(天和月(,并将它们显示在Nx2矩阵中。我的代码如下

function dates = dategen(N)
month = randi(12);
if ismember(month,[1 3 5 7 8 10 12])
day = randi(31);
dates = [day, month];
elseif ismember(month,[4 6 9 11])
day = randi(30);
dates = [day, month];
else
day = randi(28);
dates = [day, month];
end
end

例如,如果我调用函数,作为

output = dategen(3)

我希望在2x3矩阵中有3个日期。然而,我不确定如何做到这一点。我相信我需要在某个地方将N包含到函数中,但我不确定在哪里或如何。非常感谢您的帮助。

您可以使用如下逻辑索引来实现:

function dates = dategen(N)
months = randi(12, 1, N);
days = NaN(size(months)); % preallocate
ind = ismember(months, [1 3 5 7 8 10 12]);
days(ind) = randi(31, 1, sum(ind));
ind = ismember(months, [4 6 9 11]);
days(ind) = randi(30, 1, sum(ind));
ind = ismember(months, 2);
days(ind) = randi(28, 1, sum(ind));
dates = [months; days];
end

相关内容

  • 没有找到相关文章

最新更新