My script is working wrong with nested for loops

d = input('enter a number:')
figure
for b = 0:0.5:d
plot(b, 0, '*k')
pause(0.05)
end
for c = 0:0.5:d
plot(0, c, '*k')
plot(d, c, '*k')
pause(0.05)
end
for b = 0:0.5:d
plot(c, d, '*k')
pause(0.05)
end
I couldn't run this script nested for-end loops. How can I do that? It is working correct like this. I want to make lines thinner. I couldn't use Linewidht correctly probably. Can I use axes command differently or use something else?

3 件のコメント

Jan
Jan 2021 年 3 月 24 日
There are no nested loops in this code. "Nested" would be:
for i1 = 1:10
for 12 = 1:10
...
end
end
How do "I couldn't run this script" and "It is working correct like this" match?
"I want to make lines thinner." - how did you try this? Post the code, which is failing, not some other code, which is running.
"Can I use axes command differently" - yes, of course. Differently then what?
sky2
sky2 2021 年 3 月 24 日
I tried to to say I couldn't run this script when I try to use nested loops. Sorry for that.
Jan
Jan 2021 年 3 月 24 日
But there are no nested loops and no need for nested loops. If you have a problem with some code, which contain nested loops, post this code and explain the problems.

サインインしてコメントする。

 採用された回答

DGM
DGM 2021 年 3 月 24 日
編集済み: DGM 2021 年 3 月 24 日

0 投票

I'm not sure what you were trying to nest here. Would something like this suffice?
a = input('enter a number:')
clf
figure(gcf)
axes('NextPlot', 'add', ...
'XLim', [-1, a+1], 'YLim', [-1, a+1], ...
'DefaultLineMarkerSize', 3);
for s=1:3
for b = 0:0.5:a
switch s
case 1
plot(b, 0, '*k')
case 2
plot(0, b, '*k')
plot(a, b, '*k')
case 3
plot(b, a, '*k')
end
pause(0.05)
end
end
for b = 0:0.5:a
plot([0, a, a, 0, 0], [0, 0, a, a, 0], '-k')
end
As far as the lineweight goes, I don't know how thin you want it to be. You can set the linewidth property:
plot([0, a, a, 0, 0], [0, 0, a, a, 0], '-k','linewidth',0.1)
but the thinnest line that it can display is 1px wide.

その他の回答 (1 件)

Jan
Jan 2021 年 3 月 24 日

0 投票

Plotting the line does not need a loop:
% for b = 0:0.5:a % The body does not depend on b, so omit the loop
plot([0, a, a, 0, 0], [0, 0, a, a, 0], '-k')
% end
What is the problem with which line width?
plot([0, a, a, 0, 0], [0, 0, a, a, 0], '-k', 'LineWidth', 3)

3 件のコメント

DGM
DGM 2021 年 3 月 24 日
oof. I didn't even catch that.
sky2
sky2 2021 年 3 月 24 日
Oh my bad. If I want to use hold on instead of using axes. Do I need to write markersize every plot line right?
Jan
Jan 2021 年 3 月 24 日
"use hold on instead of using axes" - this is not meaningful. hold on sets the NextPlot property of the axes to 'add'. You can do this directly also.
You can either define the MarkerSize inside each plot command, or as default in the axes object. It is a question of taste.

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeGeographic Plots についてさらに検索

製品

リリース

R2020b

タグ

質問済み:

2021 年 3 月 24 日

コメント済み:

Jan
2021 年 3 月 24 日

Community Treasure Hunt

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

Start Hunting!

Translated by