I am trying to create a function form a vector from my matrix and I do not understand where my mistake is?

function A=combined (V)
for V(k)= A(i,j)
k=1;
for
i=1;
j=1;
k=k+1;
end
end

3 Comments

Can you describe in words what the input and output are? And can you provide a small example of an input V and desired output A?
Ok so I need transform my matrix into a vector so example: A= [1 2 3; 4 5 6; 7 8 9] And then form a vector A A=[1 2 3 4 5 6 7 8 9]
My function right now does not work, there is a mistake on line 2
Indeed, there are several issues but the one of defining the for...end loop indices and range is key. To do the requested function, using "linear addressing" would be a good way to proceed. Look those up in the documentation and study for loops...

Sign in to comment.

Answers (3)

You should avoid using a for loop here. You can do something like this:
function myVector=combined(myMatrix)
myVector = reshape(myMatrix,1,numel(myMatrix));
end
"...transform my matrix into a vector"
Really don't need a function for this; Matlab has syntax to do it already. A previous answer shows reshape, except I'd suggest to simply use it ( reshape, that is) inline as shown there in the function instead.
There's another Matlab idiom that's even more compact--
A=A(:).'; % convert A of unspecified dimensions to row vector
NB: the .' transpose operator to return the requested row vector instead of the column vector colon returns.

2 Comments

But I need to create a function I cannot use one already made by matlab
Then wrap the above inside the function wrapper. Unless the assignment also requires a loop be used???

Sign in to comment.

Here is an outline of what you need to be using for the for loops (seems to be a requirement for this assignment).
% Insert any initialization code here
for i = 1:size(V,1)
for j = 1:size(V,2)
% Insert your assignment etc code here
end
end

Asked:

on 27 Sep 2016

Commented:

dpb
on 29 Sep 2016

Community Treasure Hunt

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

Start Hunting!