MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by A T. on 5 Dec 2012

Hi all!

I am having troubles to do the code for a summation. I tried with two different ways, initializating the variable and then with a loop and with the "sum" function,I'll show you below but I am terribly confused on how to get what I want.

So, I have this matrix, called Snmo, that has 3 dimensions (lets say (29x100x3)) so I picture it as having 3 pages with a matrix of 29x100 in each page and I want to sum the terms in each column of the 29x100 matrix, hence I am collapsing the 29 rows into 1 and the final matrix is 1x100, then I do that for the other two pages, I combine them and the result should be a 3x100 matrix.

Please help!!

Method 1

lp=3 lt=100

Rn(lp,lt)=0;

for lp=1:length(p) %This is the third dimension =3 for lj=1:NXj % rows = 29 for lt=1:length(rec1) &the columns=100 Rn(lp,lt)=Rn(lp,lt) + (Sign(Snmo(lj,lt,lp)).*(abs(Snmo(lj,lt,lp))).^(1/N)); end end end

Method 2:

Rn=zeros(9,100);

for i=1:length(p) %3 for j=1:NXj Rn(i,100)=sum(Sign(Snmo(j,:,i)).*(abs(Snmo(j,:,i))).^(1/N))); end end

THANK YOU

Answer by Fangjun Jiang on 5 Dec 2012

Accepted answer

Would this be what you need?

a=rand(29,100,3); b=squeeze(sum(a,1)); whos;

## 1 Comment

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/55830#comment_115554

you can ignore the "Sign(Snmo(:,:,:)"