How to create vectors in the for loop

3 ビュー (過去 30 日間)
Yerzhigit Bapin
Yerzhigit Bapin 2017 年 7 月 13 日
編集済み: Andrei Bobrov 2017 年 7 月 14 日
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!

採用された回答

Elias Gule
Elias Gule 2017 年 7 月 13 日
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 件のコメント
Yerzhigit Bapin
Yerzhigit Bapin 2017 年 7 月 14 日
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?

サインインしてコメントする。

その他の回答 (1 件)

Andrei Bobrov
Andrei Bobrov 2017 年 7 月 13 日
編集済み: Andrei Bobrov 2017 年 7 月 14 日
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 件のコメント
Andrei Bobrov
Andrei Bobrov 2017 年 7 月 14 日
編集済み: Andrei Bobrov 2017 年 7 月 14 日
I'm fixed (2).

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by