Choose my k-term from matrix and defines by itself on for loop

2 views (last 30 days)
Suppose i have n×1 matrix before, (column vector), namely "x1" (i'm defining this matrix with x1). I can't write my x1 because of it depends on my input. And this matrix could be 3×1, 7×1, until n×1. In this case i won't mention it on my script below
x1
for c=1:10
for d=0:9
'a',c,=x1(c,1)
end
end
My wish is when i have x1 is matrix of 10×1 (Look at my c) my for loop will display
a1=
2
a2=
3
.
.
.
a10=
4
2, 3, 4 are arbitrary numbers depend on my input of matrix x1. That means, i want it defines a variable by itself generating from my "c" (Look at my fourth line)
And that 'a',c, can be used for evaluating another formula.
For example
Px=a1+a2+a3
Is that possible? Thanks. If my question is not clear, please tell me.
EDIT :
Another alternative in my thought is the following: For example, i want to construct summation
My attempt is:
x1
for c=1:10
for d=0:9
P=sum((x1(c,1)))*9^d
end
end
But it's Not work and displays weird thing.
As i said before, actually my goal is evaluating the k-element in my matrix that is i take it randomly (not literally "random") And construct it as like this:
Where is the k-element from my matrix, and x is just independent variable in that equation and depend on my input.
I've edit my question. I hope it's clear now and tell me if it's not. Thanks again.

Accepted Answer

Image Analyst
Image Analyst on 7 Dec 2019
It's not clear. Not sure what x1, a, and c are. It looks like the user enters some number of values for x1, then somehow, some way (unknown to me), a vector "a" is generated from x1 because you say the "a" are "arbitrary numbers depend on my input of matrix x1" so it might possibly have values of [2,3,....10] (for one example of "a" that you gave).
Anyway, if you have a vector "a" and another vector x1, you can construct the terms of the series like
theTerms = a .* x1; % Note: a and x1 are either both row vectors, or both column vectors.
so theTerms(1) is the first a times teh first x1, and theTerms(2) is the second a times the second x1, and so on.
So now you can get P(x) like this
Px = cumsum(theTerms);
where Px(1) is theTerms(1), and
Px(2) = theTerms(1) + theTerms(2), and
Px(3) = theTerms(1) + theTerms(2) + theTerms(3), and so on.
  2 Comments
Fahmy Shandy
Fahmy Shandy on 7 Dec 2019
Edited: Fahmy Shandy on 7 Dec 2019
I'm sorry not being clear. a is the element of a column vector x1, and i want randomly choose a for matrix x1, and evaluating it on another formula which is a summation containing a as a constant (notice that a is an element of matrix x1), and x is an independent variable in that is can be input any numbers that i want.
c is the number of element in matrix x1. For example if i have x1 is a matrix of 10×1, then my c is 10.
What i've done so far
for c=1:n
for d=0:m
P(x)=cumsum((x1(c,1))*x^d)
end
end
Where n and m is some large number depend on my input.
My P(x) is
And i'm confuse with "cumsum", because my x is a scalar instead of a matrix.
Image Analyst
Image Analyst on 7 Dec 2019
Don't use for loops. And you don't need a second index, 1, on x1.
Just do this
x1 = [2, 3, 4, 5, 10] % Whatever
coefficients = 1 : length(x1) % 1, 2, 3, 4, etc.
theTerms = coefficients .* x1; % Note: a and x1 are either both row vectors, or both column vectors.
Px = cumsum(theTerms)
You'll see:
x1 =
2 3 4 5 10
coefficients =
1 2 3 4 5
Px =
2 8 20 40 90

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Products


Release

R2017a

Community Treasure Hunt

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

Start Hunting!