how to make function that return struct vector whose elements are days of month

Hi every one; I am going to attempt that query: a function called May2015 that returns a struct vector (row or column) whose elements correspond to the days of May, 2015. Each struct should contain three fields with these (exact) field names: “month”, “date”, and “day” (all lower case). • The month field must contain the string 'May' (uppercase ‘M’). • The date field must contain a scalar of type double that equals the date (1 through 31). • The day field must contain the three-letter abbreviation of the day chosen from this list: 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'. For example, here is a call of the function followed by a command that shows the eleventh element of the struct array that is returned by the function:
>> m = May2015;
>> m(11)
ans =
month: 'May'
date: 11
day: 'Mon'
I am using that code
function M=May2015(a)
M=strut('month','May','date',a)
end
I have no idea how i can set the day like mon,tues,wed,thus,fri sat,sun, corresponding date no. May month start from 1 to 30 and the day on 1 was mon and of 30 was tues. Kindly guide me how can i mange day (string) with date. I think i have to use for loop but not idea.. Thanks in advance

2 个评论

Is this homework? If so, can you add 'homework' as a tag?
how to write the name of month also(for example 2 as input will give an output of February)

请先登录,再进行评论。

 采纳的回答

It's m = May2015, not m = May2015(n)... i = 1:31

2 个评论

function m = May2015
for i = 1:31
[DateNumber, DateName] = weekday(datenum([2015 5 i]));
m(i) = struct('month','May','date',i,'day', DateName);
end
@Augusto thanks for contributions. Why we not set input argument n to May2015??

请先登录,再进行评论。

更多回答(3 个)

function out = May2015
[~,k] = weekday(datenum(2015, 5, (1:31)'));
out = struct('month','May','date',num2cell((1:31)'),'day',cellstr(k));
use:
>> m = May2015
m =
31x1 struct array containing the fields:
month
date
day
>> m(11)
ans =
scalar structure containing the fields:
month = May
date = 11
day = Mon
>>

6 个评论

@Andrei thanks for contributions.. i use that code
function out = May2015(n)
[~,k] = weekday(datenum([2015 5 n]));
out = struct('month','May','date',n,'day',k);
end
and in testing getting that error
Your solution is _not_ correct.
Muhammad, the answer of Andrei is not missing a lot. If you want to have a struct array, you can either use looping on Andrei's solution, i.e.,
for i=1:length(n)
out(i) = struct('month', 'May', 'date', n(i), 'day', k(i));
end
or use cell arrays for initialization
nc = num2cell(n);
out = struct( ...
'month', 'May', ...
'date', nc, ...
'day', k);
Titus
@Titus i am revolving around the question.but not finding the solution??

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Data Type Identification 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by