【发布时间】:2015-11-17 21:03:14
【问题描述】:
我是一个 Matlab 新手,我想弄清楚为什么我的简单循环不会像它应该做的那样绘制。
更新代码(从 8/25 下方的评论移出)
rent_1=1400;
rent_2=1560;
b = zeros(1,10);
month_count = 1:10
y = month_count * rent_1;
for i = 1:10
if i == 1 | i == 2 | i == 3
b(1,i)=rent_2 * (i-0.5040);
elseif i == 4
b(1,i)=rent_2*(i-0.6300);
elseif i == 5
b(1,i)=rent_2*(i-0.7565);
elseif i == 6
b(1,i)=rent_2*(i-0.8825);
elseif i == 7
b(1,i)=rent_2*(i-1.0085);
elseif i == 8
b(1,i)=rent_2*(i-1.1345);
else
b(1,i)=rent_2*(i-1.2605);
end
end
figure,
plot(month_count,y,i,b(1,i))
原始代码(8/24 发布):
rent_1=1400;
rent_2=1560;
b = zeros(1,10);
month_count = 1:10
y = month_count * rent_1;
if i=1:3
for 1:3,
b(1,i)=rent_2(i-0.5040);
end
elseif i == 4
b(1,i)=rent_2(i-0.6300);
elseif i == 5
b(1,i)=rent_2(i-0.7565);
elseif i == 6
b(1,i)=rent_2(i-0.8825);
elseif i == 7
b(1,i)=rent_2(i-1.0085);
elseif i == 8
b(1,i)=rent_2(i-1.1345);
else
b(1,i)=rent_2(i-1.2605);
end
figure,
plot(month_count,y,i,b(1,i))
非常感谢您的反馈。马克斯·凯瑟。
【问题讨论】:
-
你能简单解释一下你的代码吗?您有几个错误发生,如果我们不知道您要达到的目标,则无法修复。例如,我是什么?是month_count吗?你说的rent_2(i - 0.6300)是什么意思,是不是表示你想在第i个月拿走rent_2价值的63%?
-
我建议您仔细手动单步执行您的代码——也就是说,想想每一行发生了什么。例如
if i = 1:3做了什么,rent_2(i-0.5040)会返回什么?通过一个简单的示例检查命令行,以确保您认为正在发生的事情正在发生。 (另请阅读uk.mathworks.com/help/matlab/matlab_prog/…) -
尝试重新组织您的问题并添加更多详细信息。我也是相对较新的人,但我发现问题的最佳格式是简短描述您正在尝试做什么、代码的相关部分、它应该做什么以及它正在做什么不是你想要什么。此外,如果它与本网站上的其他问题相近,请链接到它们并解释您的问题有何不同。祝你好运!
-
您好,感谢您的反馈。基本上,代码试图评估:(1)累计收到的租金金额:y = month_count *rent_1;另一部分 (rent_2(i - 0.6300)) 评估了经过一定的月数(在本例中是 4 个月,而不是 3 或 5 个月),收到的租金金额是“rent_2”乘以 (4-0.6300)。第一个“if”语句试图遍历第 1 个月到第 3 个月,应用完全相同的百分比进行扣除。 3 之后,百分比变化到 9 及以后。这应该被绘制出来,但只有一个 i (i=1) 的值并忽略 i = 2:10
标签: matlab loops if-statement for-loop plot