How to create vectors in the for loop

3 vues (au cours des 30 derniers jours)
Yerzhigit Bapin
Yerzhigit Bapin le 13 Juil 2017
Modifié(e) : Andrei Bobrov le 14 Juil 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!

Réponse acceptée

Elias Gule
Elias Gule le 13 Juil 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 commentaire
Yerzhigit Bapin
Yerzhigit Bapin le 14 Juil 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?

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 13 Juil 2017
Modifié(e) : Andrei Bobrov le 14 Juil 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
  1 commentaire
Andrei Bobrov
Andrei Bobrov le 14 Juil 2017
Modifié(e) : Andrei Bobrov le 14 Juil 2017
I'm fixed (2).

Connectez-vous pour commenter.

Catégories

En savoir plus sur Language Fundamentals dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by