How to create vectors in the for loop

3 views (last 30 days)
I have a hard time understanding the logic behind the for loops, so here is the question:
I have a vector:
A = [5 8 1 4 9 2];
for each value of A, I need to create other vectors in the format B = linspace(-A,A,47), so the output looks as follows:
B(1) = -5 -4.78 -4.56 ... 4.56 4.78 5
B(2) = -8 -7.65 - 7.3 ... 7.3 7.65 8
.
.
.
B(6) = -2 -1.91 -1.83 ... 1.83 1.91 2
Thank you!

Accepted Answer

Elias Gule
Elias Gule on 13 Jul 2017
Try this.
B = arrayfun(@(x) linspace(-x,x,47),A,'uni',false); % B is a cell array of vectors
Using a for loop:
len = length(A);
B = cell(len,1);
for index = 1 : len
B{index} = linspace(-A(index),A(index),47);
end
  1 Comment
Yerzhigit Bapin
Yerzhigit Bapin on 14 Jul 2017
Thanks, this works, but is there a way to do it in a matrix rather than cell? I guess nested for loop will be required for that?

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 13 Jul 2017
Edited: Andrei Bobrov on 14 Jul 2017
n = 47;
nn = n - 1;
B = A(:)*2/nn*(0:nn) - A(:); % R2016b or later
B = bsxfun(@minus,A(:)*2/nn*(0:nn),A(:)); % R2016a or earlier

Categories

Find more on Language Fundamentals in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!