Info

This question is locked. 編集または回答するには再度開いてください。

onrammp exercise 14.2 stellar motion part 2, task 6 movaway

280 ビュー (過去 30 日間)
Darnell Gawdin
Darnell Gawdin 2020 年 1 月 3 日
Locked: DGM 2024 年 7 月 17 日
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.

その他の回答 (1 件)

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.

This question is locked.

カテゴリ

Help Center および File ExchangeLine Plots についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by