How to create vectors in the for loop

3 Ansichten (letzte 30 Tage)
Yerzhigit Bapin
Yerzhigit Bapin am 13 Jul. 2017
Bearbeitet: Andrei Bobrov am 14 Jul. 2017
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!

Akzeptierte Antwort

Elias Gule
Elias Gule am 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 Kommentar
Yerzhigit Bapin
Yerzhigit Bapin am 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?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Andrei Bobrov
Andrei Bobrov am 13 Jul. 2017
Bearbeitet: Andrei Bobrov am 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

Kategorien

Mehr zu Language Fundamentals finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by