put the result in one matrix

Hi,I have ,w=[2 4 4 1 1].
for i=1:length(w)
x=find(w==w(i))
end
this code gives this result:x=[1]',x=[2 3]',x=[4 5]',x=[4 5]',in each iteration.
I want the result to be x=1 0 0 0
2 3 0 0
4 5 0 0
4 5 0 0

 Accepted Answer

Actually, your code does not give the result you post when I run it. The second row, [2 3 0 0] is repeated (as it should be) in the third.
I suggest:
w=[2 4 4 1 1];
x = zeros(4,4);
for i=1:length(w)
wi = find(w==w(i))
x(i,1:length(wi))=wi;
end
that produces:
x =
1 0 0 0
2 3 0 0
2 3 0 0
4 5 0 0
4 5 0 0

4 Comments

Perfect .Thanks a lot
My pleasure!
Le Huy
Le Huy on 14 Apr 2014
Edited: Le Huy on 14 Apr 2014
hello everyone! excuse me! could you please explain the code "x(i,1:length(wi))=wi" to me? i want to know what does the figure "1:length(wi)" mean? thank you!
LeHuy — The ‘1:length(wi)’ statement creates a vector starting at 1 with spacing of 1 to whatever the length of wi is for that loop. If wi=3, the vector is [1 2 3]. Please see the documentation on the colon ‘:’ operator for more details.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!