Creating matrix from a for loop

I have this 'for loop' (where A a matrix from my program):
for m=symbols(1:1000)
d1=abs(m-A);
[C,I]=min(d1);
k=A(I);
end
I want from this loop to save the values of 'k' (1000 total) to a (1, 1000) matrix? How can I do this because I am getting some errors!
Thank you...

 Accepted Answer

Hi athpapa,
I don't know what your "A" matrix or "symbols" matrix had, so I will just make them random numbers:
A = randi(500, 10) - 250;
symbols = randi(30,1,1000);
Now, we can make "k" as a vector of numbers (rather than just a single number). Note that I use "i" to iterate from 1:1000 so that we know which element of "k" to save our answer to:
k = zeros(1,1000);
for i = 1:1000
m = symbols(i);
d1=abs(m-A);
[C,I]=min(d1(:));
k(i) = A(I);
end
Does this do what you wanted it to do?

3 Comments

thanx!!This worked for me..
Do you know if I have a matrix that I use it like an index, for example: A=[1 3 2 4 1 3] which points to a matrix which represents binary bits B=[00 01 11 10]; How can I produce these bits? I mean I want: C=B(1) gives me 00, C=B(2) gives me 01 and so on...
The issue here is *all* about how to store "B", because the way you have it:
B=[00 01 11 10]
will not actually store the "binary bit" aspect - it will just convert it to numbers:
B=[0 1 11 10]
You can try perhaps defining "B" as a cell array of strings:
B={'00' '01' '11' '10'}
In which case I think it will work how you intended:
B([1 3 2 4 1 3])
If this doesn't quite answer you question, it's a good idea to make a new question and post it (since this is off-topic from the original)
dec2bin(A,2) - '0'

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 13 Nov 2011

Community Treasure Hunt

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

Start Hunting!