What does this mean? (Attempted to access Q(0); index must be a positive integer or logical.)

1 次查看(过去 30 天)
I am trying to use the formula Q(t ) = CV(1 − e−t/RC ) to monitor the charge on the capacitor every .2 seconds given V = 9,R = 4, C = 1, and Q at t(0) = 0. We are supposed to display the time and charge every .1 seconds until Q exceeds 8.
This is my code so far:
Q(0)=0;
V = 9; %Voltage
R = 4; %Resistor Value
C = 1; %Capacitor Value
p = 0;
t = .1; %Time
for Q = 0:8
Q(t) = C * V * (1-exp(-(p+t)/(R * C))); %Charge Function
plot (Q(t),'c+')
end
When I attempt to evaluate the code i keep getting this:
Attempted to access Q(0); index must be a positive integer or logical.
Thank you

回答(2 个)

Azzi Abdelmalek
Azzi Abdelmalek 2013-3-10
编辑:Azzi Abdelmalek 2013-3-10
In Matlab you can not use
A(0) or A(-1) or A(1.5)
index must be a positive integer or logical:
Positive integer are: 1,2,3,...
Logical are: logical(0) and logical(1)
  2 个评论
Turk
Turk 2013-3-10
now when I change the Q(0) to Q(1) I get:
>> Q(1)=0;
V = 9; %Voltage
R = 4; %Resistor Value
C = 1; %Capacitor Value
p = 0;
t = .1; %Time
for Q = 0:8
Q(t) = C * V * (1-exp(-(p+t)/(R * C))); %Charge Function
plot (Q(t),'c+')
end
Attempted to access Q(0.1); index must be a positive integer or logical.
How would you correct this? I am not that good at Matlab yet sadly..

请先登录,再进行评论。


Daniel Shub
Daniel Shub 2013-3-10
Your for loop doesn't make any sense. It is a bad idea to iterate on a variable that you then change within a for loop (in this case Q). Further, t is a non-integer value so cannot be used to index Q. Finally plot (Q(t),'c+') is probably not doing what you expect.
MATLAB comes with some really great documentation. I suggest reading it.

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by