problem in Matrix Indexing

2 Ansichten (letzte 30 Tage)
sita
sita am 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 Kommentare
José-Luis
José-Luis am 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

vipul utsav
vipul utsav am 22 Nov. 2012
Bearbeitet: Walter Roberson am 22 Nov. 2012
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

Weitere Antworten (1)

Arthur
Arthur am 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 Kommentar
Jan
Jan am 1 Feb. 2013
Or:
k = [1,2,3];
f = k(ones(1,v), :);

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by