Very tricky:Manipulation with complex array

I need to write a m.file function for this.
For example
array X = [4, 1, 1, 3, 8, 12], I need to make the array which will contain bold ones as well Y = [4, 1, 5, 1, 3, 4, 8, 12, 20].

3 Comments

Hi Jovan,
What have you tried so far?
You may be interesed in reshape and sum
I was thinking to make 3 sub arrays,one array will go with even(2:2:end),one will go with odd(1:2:end),and one will be sum of first element of the both arrays.
After that i would combine it first element of each array,than second element of each array.
The problem is that i need it to make in a m.file with kinda a algorithm method.
However i will try to make it with function reshape.
If you have some additional advice i would be thankful

Sign in to comment.

 Accepted Answer

Following @Paul suggestion
% original vector
X = [4, 1, 1, 3, 8, 12];
% reshape to have 2xN vector
W = reshape(X,2,[]);
% calculate the sum
S = sum(W,1);
% concat the vector and reshape
Y = reshape([W; S],1,[])
Y = 1×9
4 1 5 1 3 4 8 12 20

3 Comments

Is there any way to make it with a for,while,if functions?
So there will be array X
Array Y will took (x(1),x(2) than x(x(1)+x(2)),x(3),x(4)..
Why using for loops when the vectorized version is effective, cleaner and more efficient?
Because this tasks want from me to learn logic of the Matlab.I know its absolutely better like this.
But maybe i will get problem like this and i will be stucked if i dont know some function.
Write a m.file which is asking to enter array X (integer numbers),which will make a new array Y .Elements of the array Y are sum from even digits of elements array X. If some element of array X is not inteneger,make a comment about error.
For example X = [81, 19, 102, 22, 12, 21] Y = [8, 0, 2, 4, 2, 2]
And I will need to use the loop to see is there a even digit in every number

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!