필터 지우기
필터 지우기

onrammp exercise 14.2 stellar motion part 2, task 6 movaway

조회 수: 183 (최근 30일)
Darnell Gawdin
Darnell Gawdin 2020년 1월 3일
답변: tania 2024년 3월 12일
For task 6 I don't understand how matlab connects starname to a particular graph.
Also I'm not sure how this piece of code works...
"movaway = starnames(speed < 0) "
how does this line of code use a variable that is in a loop before this line of code?
Sorry in advance if this is an obvious question.
Task 1
[sHa,idx] = min(spectra);
lambdaHa = lambda(idx);
z = lambdaHa/656.28 - 1;
speed = z*299792.458
Tasks 2 - 4
for c = 1:7
s = spectra(:,c);
if speed(c) >= 0
loglog(lambda,s,"--")
else
loglog(lambda,s,"LineWidth",3)
end
hold on
end
hold off
Task 5
legend(starnames)
Task 6
movaway = starnames(speed < 0)
  댓글 수: 1
Nikita
Nikita 2024년 2월 12일
Add an if statement to the for loop body. If speed(v) is less than or equal to 0, create a plot of s against lambda using a dashed line (--).
Add the command hold on between the two end keywords so that you only create one plot.

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

채택된 답변

KALYAN ACHARJYA
KALYAN ACHARJYA 2020년 1월 3일
편집: KALYAN ACHARJYA 2020년 1월 3일
See the example, lets suppose starnames is variable having all types of numbers
starnames=[-2 3 45 7 2 0 -4 5 7 7 6 9];
speed=[2 3 -4 5 6 7 8 0 5 2 -30] ; % Just random example
## speed<0 is an conditional assignment, its return a logical array (with 0 & 1), when condition true, its 1, otherwise 0
>> speed < 0
ans =
1×11 logical array
0 0 1 0 0 0 0 0 0 0 1
## starnames(speed < 0) return an array, where the 1 presence in the above logical array
>> movaway = starnames(speed < 0)
movaway =
45 6
This is just an example to understand the issue (This approach is good way for efficient code, conditional & array indexing)
  댓글 수: 1
Darnell Gawdin
Darnell Gawdin 2020년 1월 3일
Thank you for your time and expertise to answer this question. I see how it works now.

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

추가 답변 (2개)

Bongani Tavengwa
Bongani Tavengwa 2020년 6월 5일
편집: DGM 2023년 2월 22일
Task
Add an if statement to the for loop body. If speed(c) is less than or equal to 0, create a loglog plot of s against lambda using a dashed line (--).
After the if statement, add the command hold on so that only one plot is created.
for c = 1:7
s = spectra(:,c);
if speed(c) >= 0
loglog(lambda,s,"--")
else
loglog(lambda,s,"LineWidth",3)
end
hold on
end
please help me where do i go wrong
  댓글 수: 9
Meifeng
Meifeng 2022년 7월 30일
for v=1:7
s=spectra(:,v)
if speed(v)<= 0
plot(lambda,s,"--")
end
hold on
end
Narmadha
Narmadha 2023년 9월 9일
Add an else statement. If speed(v) is greater than 0, create a plot of s against lambda using a line width of 3.
After the for loop, enter hold off.

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


tania
tania 2024년 3월 12일
Habiendo creado un script en tiempo real para encontrar el desplazamiento al rojo, puede modificar fácilmente este script para repetir el cálculo con cualquier estrella de la matriz spectra.
ACTIVIDAD
Modifique la sección Tasks 2 & 7 del script para que realice el cálculo del desplazamiento al rojo con la segunda estrella de spectra en lugar de la sexta.
s = spectra(:,2)
[sHa,idx] = min(s)
lambdaHa = lambda(idx)
z = lambdaHa/656,28 - 1
velocidad = z*299792.458
Test Results:
¡Incorrecto!
¿Es s la segunda columna de spectra?
¿Tiene lambdaHa el valor correcto?
¿Tiene speed el valor correcto?
cual es el error ???

카테고리

Help CenterFile Exchange에서 2-D and 3-D Plots에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by