indexing a vector by a power

조회 수: 2 (최근 30일)
dustin
dustin 2013년 9월 25일
I would like my vector to go by powers of 2 but everything I tried hasn't worked.
for n = 0:9
pow = (1:2^n:512)
end
but this doesn't return a vector with 1, 2, 4, 16, ...
What can I do to achieve this?

채택된 답변

W. Owen Brimijoin
W. Owen Brimijoin 2013년 9월 25일
You could accomplish this without using a for loop as follows:
n = 4;
p = 2.^cumprod([1,2+zeros(1,n-1)])
this results in:
p =
2 4 16 256
*Mind you, the start of the sequence you are asking for doesn't follow your own rules. Yes each element is the square of the previous one, except that 1^2 does not equal 2. So if you are intent on breaking that rule and want this sequence to start with a 1 and have n elements, then you would need to do this:
p = [1,2.^cumprod([1,2+zeros(1,n-2)])]
yielding:
p =
1 2 4 16

추가 답변 (2개)

Azzi Abdelmalek
Azzi Abdelmalek 2013년 9월 25일
Why are you using if n = 0:9. what you need is a for loop
  댓글 수: 6
dustin
dustin 2013년 9월 25일
I don't want to erase the previous result each iteration. I want to put each step in a vector. How can I do this?
Azzi Abdelmalek
Azzi Abdelmalek 2013년 9월 25일
For example
k=1
a(k)=2
k=2
a(k)=14
You have to read the getting started with Matlab

댓글을 달려면 로그인하십시오.


Image Analyst
Image Analyst 2013년 9월 25일
I don't know what happened to 2^3=8 - maybe it's missing, but if each element is the square of the previous element, this will do that and give you the output you gave:
p = [1, 2];
for k = 3 : 9
p(k) = p(k-1)^2;
end
% Display p
p
In the command window:
p =
Columns 1 through 7
1 2 4 16 256 65536 4294967296
Columns 8 through 9
1.84467440737096e+19 3.40282366920938e+38
On the other hand, this code seems to be more like what your code does, but does not give you the output you gave because the 8 is in there:
for k = 0 : 9
p(k+1) = 2^k;
end
% Display p
p
In the command window:
p =
1 2 4 8 16 32 64 128 256 512
  댓글 수: 2
dustin
dustin 2013년 9월 25일
I need p to be a vector though.
Jan
Jan 2013년 9월 25일
편집: Jan 2013년 9월 25일
@dustin: But p is a vector already.
These questions are such basic, that I suggest (as Azzi's did already) to read the Getting Started chapters of the documentation. The forum is not the right place to learn the fundamental usage of Matlab, because this has been done exhaustively by experts in the documentation already. If we re-tell what you can find there, too much time would be wasted.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by