What's the error in my code?
1 次查看(过去 30 天)
显示 更早的评论
I can't seem to plot this function I wrote. What is wrong with it? Thanks in advance!!
function [] = Apple(D,T)
x= linspace (0,30,3000);
y=0;
for i = 0:6;
if x > (i*T) && x < ((T*i)+(D*T))
y(x)= 1;
elseif y(x) == 0;
end
end
plot(x, y(x));
ylim([-.25,1.25])
end
2 个评论
回答(2 个)
Michael Haderlein
2015-2-2
x > (i*T) && x < ((T*i)+(D*T))
You cannot use && in case of arrays. Use & instead.
if x > (i*T) && x < ((T*i)+(D*T))
You cannot use arrays as condition for the if structure. What should the program do if some elements of the array are true and some are false?
elseif y(x) == 0;
Again, that's an array as condition which doesn't work. Additionally, x is not an appropriate index (only values 1, 2, 3, and so on are allowed).
0 个评论
Stephen23
2015-2-2
编辑:Stephen23
2015-2-4
Here is a short list of some of the syntax errors and poor coding. Some of these prevent it from working:
- MATLAB has one-based indexing . The code y(x) tries to obtain the zeroth element (as x(1)==0), which is invalid in MATLAB.
- Logical short-circuit operators || and && require scalar logical values, not arrays as they are here: x > (i*T) && x < ((T*i)+(D*T)). Because x is an array, x>n will also be an array, and so the syntax x<n && ... will always be an error.
Others are just things that really could be done much much better:
- Array preallocation before the loop: y probably needs to be defined to be the same size as x.
- Pay attention to the editor code warnings : it shows one warning with the version I am using.
- Variable name i should be avoided, as this is the name of the inbuilt imaginary unit .
- The use of a for loop, when this simple code should really be vectorized .
Without knowing exactly what your aim is, it is hard to know how to "fix" this code, as it is very unclear.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Performance and Memory 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!