# Code some excel formulas in Matlab, in a smart way

1 view (last 30 days)
Mikkel Ibsen on 11 Sep 2017
Edited: José-Luis on 11 Sep 2017
Hey
I have a quick question, I have this excel ark where there is a column that has the following code:
q1 = 1/2 * x1 * y1
q2 = 1/2 * x2 * y2 + x1 * y1
q3 = 1/2 * x3 * y3 + x2 * y2 + x1 * y1
q4 = 1/2.............
and so on and so on.
How do I program this smart? I've tried to make a for loop, but I can't figure out how the make the 1/2 only stick to the new x-y values and not the others.

Steven Lord on 11 Sep 2017
This sounds vaguely homework-like so I'm not going to give the answer just a hint. I assume x1, x2, etc. refer to elements of a vector x and similarly for y1, y2, etc. Let xy be x.*y. Take a look at the cumsum function applied to xy. It doesn't get you all the way to your answer, but it gets you most of the way there.
##### 2 CommentsShowHide 1 older comment
José-Luis on 11 Sep 2017
dummy = x.*y; %doesn't make much sense if y is a vector of ones
result = cumsum(dummy) - dummy./2;

KL on 11 Sep 2017
x = 1:5;
y = 6:10;
xy = arrayfun(@(a,b) [x(1):a;y(1):b],x,y,'UniformOutput',false);
q = cellfun(@(c) sum([0.5 ones(size(c)-1)].*prod(c)),xy,'UniformOutput',false)
##### 2 CommentsShowHide 1 older comment
Image Analyst on 11 Sep 2017
There is a mat2cell() function. See the FAQ http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F for an explanation of cells. However I think Steven's answer/hint is the more straightforward, less cryptic approach.