2 views (last 30 days)

If d is a vector containg the data for each day of march for 13 years. So, d is a vector with 403 values.

Then mu and sd are the mean and standard deviation of march for each year. mu and sd are vectors with 13 values.

I need to calculate first d-mu, and then d-mu/sd. How to do it in matlab?

dpb
on 5 May 2019

Edited: dpb
on 5 May 2019

I presume you mean to standardize the monthly data by year...presuming you have a date variable along with the observation, then findgroups and splitapply will do the job; otherwise the "dead-ahead" solution is to just repelem the values of the mean, sd array...

z=(d-repelem(mu,31))./repelem(sd,31);

where I've used mu, sd for mean, std dev instead of ill-chosen x, y

ADDENDUM

Would have been easier to have been told what things were from the git-go instead of having to download the data...but

d.StdDemand=(d.Demand-repelem(mu.Demand,31))./repelem(sd.Demand,31);

dereferences all the timetables.

In general, since you'll undoubtedly be wanting to do this for other months, replace the hardcoded 31 with a variable for the proper number of days in month (also remembering to account for leap years for February).

dpb
on 5 May 2019

t.z=(t.d-repelem(t.mu,31))./repelem(t.sd,31

As I said, "t" was a placeholder for your (unidentified) table name; also d, mu, sd are presumed variable names inside the table.

You have to apply the logic to the data structure(s)/variable names you're using...see amended answer.

dpb
on 5 May 2019

And, I just showed code that works on that data here in the amended Answer.

As for leap years and days therein, eomday() is leapyear aware so using it instead of hardcoded days would be one way.

Opportunities for recent engineering grads.

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

Start Hunting!
## 3 Comments

## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/460345-how-i-can-substract-vectors-with-different-length#comment_701958

⋮## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/460345-how-i-can-substract-vectors-with-different-length#comment_701958

## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/460345-how-i-can-substract-vectors-with-different-length#comment_701959

⋮## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/460345-how-i-can-substract-vectors-with-different-length#comment_701959

## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/460345-how-i-can-substract-vectors-with-different-length#comment_701963

⋮## Direct link to this comment

https://in.mathworks.com/matlabcentral/answers/460345-how-i-can-substract-vectors-with-different-length#comment_701963

Sign in to comment.