MATLAB Answers

sita
0

problem in Matrix Indexing

Asked by sita
on 22 Nov 2012
Hi, below code i am trying to read matrix elements from an array of elements. i should get 5x3 matrix like
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
but i am gettting like below
1 2 3
1 2 3
1 2 3
1 2 3
3 3 3
i understand there is some problem with indexing.
Please help me in getting this.
i got some answer saying that to remove f(i,:)=k(x) if i do that f is 1 2 3 it is only 1X3 matrix i need it to be 5X3.
i dont want to use repmat because i have to use this in other context where i can not use.
Thanks,
Sita
n=5; v=3; k=[1 2 3];
for i=1:n
x=0;
for j=1:1:v
x=x+1;
f(:,j)= k(x);
end
f(i,:)=k(x)
end

  2 Comments

José-Luis
on 22 Nov 2012
Remove
f(i,:) = k(x);
The result of your loop will be a 5x3 matrix. It will be a 1x3 matrix only on the first iteration. Consider preallocating for speed.

Sign in to comment.

2 Answers

Answer by vipul utsav on 22 Nov 2012
Edited by Walter Roberson
on 22 Nov 2012
 Accepted Answer

n=5; v=3; k=[1 2 3];
for i=1:n
x=0;
for j=1:v
x=x+1;
f(i,j)= k(x);
end
end

  0 Comments

Sign in to comment.


Arthur
Answer by Arthur
on 22 Nov 2012

Well, if you insist not to use repmat (why??), I'd do it like this:
f = zeros(n,v);
for i = 1:v
f(:,i) = k(i);
end

  1 Comment

Jan
on 1 Feb 2013
Or:
k = [1,2,3];
f = k(ones(1,v), :);

Sign in to comment.