Create a vector with for loop with mathematical operations

2 Ansichten (letzte 30 Tage)
w=[5 4 3 2]
Use this vector in a mathematical expression to create the following vectors:
My code snippet is below, code for that question. When I run it, I can't get expected result. I just want to create a vector as noted above.How can I solve that question?
w=[5 4 3 2]
for i= w
a3=[1/(i+i)]
b3 =[i^i]
c3 =[i/sqrt(i)]
d3 =[(i^2)/(i^i)]
end

Akzeptierte Antwort

KSSV
KSSV am 10 Mai 2020
Read about ., element by element operations.
w = [5 4 3 2] ;
a = 1./(w+w) ;
b = w.^w ;
c = w./sqrt(w) ;
d = w.^2./w.^w ;

Weitere Antworten (1)

Toder
Toder am 10 Mai 2020
To fix your current code, you need to use indices in the for loop.
w=[5 4 3 2]
for i = w
a3(6-i)=[1/(i+i)]
b3(6-i) =[i^i]
c3(6-i) =[i/sqrt(i)]
d3(6-i) =[(i^2)/(i^i)]
end
This assigns a3(1) in the first loop, a3(2) in the second, etc. Your code reassigns the scalar a3 each loop. The indices I use are somewhat strange because we're looping over w, which is fine, it just makes indices harder to keep track of. You could do it differently by using a counter:
w=[5 4 3 2]
j = 1
for i = w
a3(j)=[1/(i+i)]
b3(j) =[i^i]
c3(j) =[i/sqrt(i)]
d3(j) =[(i^2)/(i^i)]
j = j+1
end
Or you could have your for loop count from 1 to 4:
w=[5 4 3 2]
for i = 1:4
a3(i)=[1/(w(i)+w(i))]
b3(i) =[w(i)^w(i)]
c3(i) =[w(i)/sqrt(w(i))]
d3(i) =[(w(i)^2)/(w(i)^w(i))]
end
All this being said, I recommend "vectorizing" your code where possible. Dot operators perform arithmetic element-by-element, see the documentation for dot multiplication here. For instance, the whole a3 vector can be defined this way:
a3 = 1./(2*w)
  5 Kommentare
David Banahene
David Banahene am 23 Jan. 2022
I have a vector a=[1:5] and would want to know how to plot (a-3)^3.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by