Clear Filters
Clear Filters

creating matrix using output elements

1 view (last 30 days)
Hi, i havecode below which ouputs given values independently. however, i want the ouputs to be under one matrix,what can i add to the code to do this job. B is an n by 1 matrix say B=[1:1:24]'. How can I collect all the values of Hourly_mean to form one matrix? kindly assist. Thank you
B=[1:1:576]'
for k=1:1:numel(B)
Hourly_mean=mean(B(k:24:end))
end
[Hourly_mean]

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 19 Jan 2023
B=[1:1:576]';
mean(reshape(B,24,[]))
ans = 1×24
12.5000 36.5000 60.5000 84.5000 108.5000 132.5000 156.5000 180.5000 204.5000 228.5000 252.5000 276.5000 300.5000 324.5000 348.5000 372.5000 396.5000 420.5000 444.5000 468.5000 492.5000 516.5000 540.5000 564.5000
  3 Comments
Steven Lord
Steven Lord on 20 Jan 2023
Let's take a smaller example that demonstrates the technique. Say I want to take the mean of every 6th element of B. We can reshape B into a matrix.
B = 1:24;
C = reshape(B, 6, 4)
C = 6×4
1 7 13 19 2 8 14 20 3 9 15 21 4 10 16 22 5 11 17 23 6 12 18 24
Now take the mean along the 2nd dimension.
D = mean(C, 2)
D = 6×1
10 11 12 13 14 15
Spot check that D is correct by manually computing the mean of the 3rd, 9th, 15th, and 21st element of B. Does that match D(3)?
sum(B(3:6:24))./4
ans = 12
Fangjun Jiang
Fangjun Jiang on 20 Jan 2023
@Steven Lord, good catch! mean(C,2) is more likely the needed outcome than mean(C).

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 20 Jan 2023

Tags

Products


Release

R2016a

Community Treasure Hunt

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

Start Hunting!