Combining two different matrices of different sizes

I want to combine two different matrices with a different number of columns so that the output has the lower number of columns. I also want the columns that were "modified" to have the average value of what they were modified. I think these examples clarify what I'm trying to say:
For example, for matrices that are multiples of each other:
A=[5 6]
B=[1 2 3 4]
I would combine these matrices so
C=[5 6; 1.5 3.5]
Now if the matrices aren't multiples of each other, then it would combine to whichever value it finds fit, for example:
A=[5 6]
B=[1 2 3 4 5]
Then the output is:
C=[5 6; 2 4.5] (The first 3 values were averaged)
Thanks

2 Comments

The question is not clear. What happens for other number of columns for A and C?

Sign in to comment.

 Accepted Answer

A=[5 6]
B=[1 2 3 4 5]
m=numel(B);
m1=ceil(m/2)
C=[A;mean(B(1:m1)) mean(B(m1+1:end))]

2 Comments

doesn't this work only with numel(A) == 2 ?
Try this
A=[5 6 7]
B=[1 2 3 4 5 7 8 6 9 10 11]
n=numel(A)
m=numel(B);
m1=floor(m/n)
m2=m-m1*n+m1
C1=mean(B(1:m2))
for k=m2+1:m1:m
C1=[C1;mean(B(k:k+m1-1))]
end
C=[A;C1']
%or I prefer
A=[5 6 7 80 47]
B=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 25 35]
n=numel(A);
m=numel(B);
m1=floor(m/n);
h=zeros(1,n);
h(1:m-m1*n)=1
v2=cumsum(ones(1,n)*m1+h);
v1=[1 v2(1:end-1)+1];
C=[A;arrayfun(@(x) mean(B(v1(x):v2(x))),1:n)]
%In the first code the mean values were calculated for
[B(1:5) B(6:8) B(9:11)]
% In the second code
[B(1:4) B(5:8) B(9:11)]

Sign in to comment.

More Answers (0)

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!