My plot comes up as a white graph with no line.
14 次查看(过去 30 天)
显示 更早的评论
When I try to plot with this code which is given below, nothing comes up. There are no errors, there's just a blank page. I want to lines between y values depending t values.
Please help me. Thank you from now.
clear all;
clc;
for t=1:25
if t==1,2,3,4,5;
y(t) = 1
elseif t==6,7,8,9,10;
y(t) = 0.9
elseif t==11,12,13,14,15,;
y(t) = 1
elseif t==16,17,18,19,20,;
y(t) = 1.05
elseif t==21,22,23,24,25,;
y(t) = 1
end
end
figure
hold on;plot(t, y)
xlabel('t(1/100)'); ylabel('VR');
title('VR Değişimi');
Expected graph is like that
0 个评论
采纳的回答
Stephen23
2021-4-12
编辑:Stephen23
2021-4-12
The basic problem is that this syntax
if t==1,2,3,4,5;
is equivalent to writing this (i.e. each expression is evaluated independently):
if t==1
2
3
4
5;
That is not the correct way to compare mulitple values at once. Remember that the name MATLAB comes from MATrix LABoratory: you should always keep your data in vectors/matrices/arrays. For example:
if any(t==[1,2,3,4,5])
% ^^^^^^^^^^^ vector!
Note that you should preallocate y before the loop:
Note that whilst it is certainly possible to plot vertical lines, your approach will not do this.
3 个评论
Image Analyst
2021-4-12
Instead of an if/else, a switch statement can be used to compare multiple cases at a time. For example:
switch(result)
case 1
disp('result is 1')
case {52, 78}
disp('result is 52 or 78')
end
更多回答(2 个)
Atsushi Ueno
2021-4-12
- After exexuting your script, y is like [1 0 0 0 0 0.9 0 0 0 0 1 ....] it must be different from what you expected.
- After executinf for loop, the variable t is going to be deleted. So, you need t = 1:25 after the for loop.
How about the code below?
clear all;
clc;
t = 1:25;
y = repelem([1 0.9 1 1.05 1], 1, 5);
figure
hold on;
plot(t, y)
xlabel('t(1/100)');
ylabel('VR');
title('VR Değişimi');
3 个评论
Atsushi Ueno
2021-4-12
How about using stem(t, y) or stairs(t, y) instead of plot(t, y)?
You have to care about index for using other functions.
clear all;
clc;
t = 0:24; % just changed from 1:25 for stairs()
y = repelem([1 0.9 1 1.05 1], 1, 5);
figure
hold on;
stairs(t, y);
xlabel('t(1/100)');
ylabel('VR');
title('VR Değişimi');
Jithin Nambiar J
2021-4-12
编辑:Jithin Nambiar J
2021-4-12
Your code can get pretty long and tedious. The if statement in your code would not work well because it wont compare the values separated by commas properly.
t=0.0001:0.01:40;
x=[t>0]-0.05.*[t>5]+0.05.*[t>15]+0.05.*[t>25]-0.05.*[t>35];
plot(t,x)
grid on;
xlabel('t(1/100)'); ylabel('VR');
title('VR Değişimi');
Unless you plan to plot another graph in the same above plot. You don't need to use
hold on
Hope this helps. Cheers!
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!