Creation of new column

1 view (last 30 days)
Pap
Pap on 20 Mar 2011
I have an input file (ex.txt) which contains three columns
0 0 0
1 2 5
2 3 6
3 4 4
4 1 3
6 4 8
5 2 9
2 5 5
I need to save the sum of the previous row columns into a fourth column in the input txt file, in order to look like
0 0 0
1 2 5 0
2 3 6 8
3 4 4 11
4 1 3 11
6 4 8 8
5 2 9 18
2 5 5 16
Any Hint?
Panos

Accepted Answer

Paulo Silva
Paulo Silva on 20 Mar 2011
%code
a=[0 0 0
1 2 5
2 3 6
3 4 4
4 1 3
6 4 8
5 2 9
2 5 5]
b=[0;sum(a,2)];
c=[a b(1:end-1)];
%result
c =
0 0 0 0
1 2 5 0
2 3 6 8
3 4 4 11
4 1 3 11
6 4 8 8
5 2 9 18
2 5 5 16
  7 Comments
Pap
Pap on 21 Mar 2011
Thanks Paulo,
How can I put in the above code the argument that if the value of current row (third column) is equal to the value of previous row and previous value of column 4 is 'BUY' then put BUY and if it is SELL ( otherwise) put 'SELL'.
Also where do you define 1,0 ( in order to change it to BUY SELL).
And may I also ask which code defines the first value only of cilumn 4, in order to apply then the above code.
Thanks a lot for the great help.
Pap
Pap on 21 Mar 2011
Note that your data set is different from the above ( actually is my first one. The latest one has a case where two elements of column thre are equal and thus someone has to examine the previous value of column four)

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 20 Mar 2011
Hints: fopen, textscan, fprintf,
You will not be able to do this in a single output (not in any clean manner), as you cannot construct a numeric array that has a different number of columns.
You appear to be missing a final output line that has just a 12 by itself, representing the sum of the three values on the last line of the input file.
  1 Comment
Pap
Pap on 20 Mar 2011
Thanks for the answer Walter.
Actually I don't mind missing the final output line.
Panos

Sign in to comment.

Tags

Products

Community Treasure Hunt

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

Start Hunting!