12 views (last 30 days)

I have a 442x25 matrix 'yield' which I want to sum each column in 'yield' to create a 1x25 matrix 'nyi', so this can be multiplied by another 1x25 matrix Np.

I ran this exact code earlier on a different computer where both of the matrices were produced the size they are meant to be so i am not sure what is wrong.

It seems as if the code thinks there are only two columns.? But I have 25 columns

I am an amateur when it comes to matlab so I would really appreciate any help!

See the code for my loop and errors produced:

dim=size(E_min,2);

fun = @(E) A*exp(-E/kT);

for i = 1:dim

Np=integral(fun,E_min(i), E_max(i));

Np(i)=Np;

y=yield(:,1:i,1);

nyi=sum(y);

num(:,i)=nyi*Np(i);

end

The code is recognising my dim as 1x25 (which is correct) however when I run the following loop I am getting an error

Unable to perform assignment because the size of the left side is 1-by-1 and

the size of the right side is 1-by-2

Error in matrixfunction (line 41)

num(:,i)=nyi*Np(i);

Ridwan Alam
on 19 Dec 2019

Edited: Ridwan Alam
on 19 Dec 2019

dim=size(E_min,2);

% dim = 25

fun = @(E) A*exp(-E/kT);

Np = [];

nyi = [];

for i = 1:dim

Np(i)=integral(fun,E_min(i), E_max(i));

% size(Np) is 1x25

% size(yield) is 442 x 25

y=yield(:,i); % size(y) is 442 x 1

nyi(i)=sum(y); % size(nyi) is 1x25

end

num = nyi .* Np; % size(num) is 1x25

Hope this helps!

Allen
on 19 Dec 2019

Anna, if you are trying to multiple two 1x25 vectors element-wise then try using a period in front of the multiplication operator.

% Two 1x25 vectors with random values

Np = rand([1,25]);

nyi = rand([1,25]);

% Use '.*' for element-wise calculations instead of '*' which is trying to perform dot-multiplication.

% For '*' to work with two vectors they would need to be sized 1xn and nx1.

Np.*nyi

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

Start Hunting!
## 0 Comments

Sign in to comment.