linspace
23 ビュー (過去 30 日間)
古いコメントを表示
I want to create a vector which runs from 1 to 260 with increments of 360 between every whole number.
I can do this manually by: y=linspace(1,2,360); y1=linspace(2,3,360);... and so on.
By combining these I would have a vector which was 260*360=93600 long. However, there must be a easier way of doing this? preferably without a loop.
0 件のコメント
採用された回答
the cyclist
2012 年 1 月 18 日
N = 260;
y = linspace(1,N,(N-1)*360+1);
6 件のコメント
David Young
2012 年 1 月 19 日
So maybe you need
linspace(1+1/360, n, (n-1)*360)
or
linspace(1, n-1/360, n, (n-1)*360)
Using linspace(1,n,(n-1)*360) is incorrect if the spacing between the points is meant to be 1/360. (See my answer below and the cyclist's comment above.)
その他の回答 (1 件)
David Young
2012 年 1 月 18 日
If you concatenate the vectors y, y1 etc. the integer elements will be repeats. That is, it will go [1 1.0028 ... 1.9972 2 2 2.0028 ... ] and likewise at 3, 4 etc. Is that what you want, or do you really want it to go [1 1.0028 ... 1.9972 2 2.0028 ...]?
Assuming you actually want a linear sequence all the way through, you can just use
yall = linspace(1, 260, 259*360+1);
My choice of the final argument makes the difference between successive entries equal to 1/360, which I think is what you mean by increments of 360 between each whole number. If you use 260*360 for N, this will not be the case.
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!