필터 지우기
필터 지우기

Why isn't my loop working?

조회 수: 3 (최근 30일)
Madison Goodwin
Madison Goodwin 2018년 5월 18일
댓글: Madison Goodwin 2018년 5월 18일
fid = uigetfile('*.*');
fid = fopen(fid);
deltat = 0.5;
n = 1;
while fgetl(fid)~= -1
line = fgetl(fid);
line = sscanf(line, '%f V, %i counts, %i ms');
vout = line(1);
counts = line(2);
t = line(3)/1000;
t(n+1) = t(n) + deltat;
% Q = flowrate (L/s)
% h = head(m)
% P = pressure
% p = density of water
p = 1000; %kg/m^3);
g = 9.81;
vs = 5;
% vout - get from data
% h - get from data
% Q - calculated from data
P = ((vout/vs) - 0.04)/0.0018;
% Finding head
h = (P/1000)/(p*g);
Q = counts/((t(n)/1000)*330);
% Finding hydraulic power
H =(Q*p*g*h)/1000;
end
  댓글 수: 6
Madison Goodwin
Madison Goodwin 2018년 5월 18일
Ok now it is producing all the values, but the time step is not updating as I would like it, it is meant to increase by 0.5 seconds for each line, but for each line in the data the t value is 0.5.
Madison Goodwin
Madison Goodwin 2018년 5월 18일
So if I have these two lines as my code will it update the timestep, the value of line(3) is 500ms. After dividing by 1000 it is 0.5, and deltat is 0.5
t = line(3)/1000;
t = t + deltat;

댓글을 달려면 로그인하십시오.

답변 (1개)

Greg
Greg 2018년 5월 18일
편집: Greg 2018년 5월 18일
Purely a guess, you goofed up some indexing:
t = line(3)/1000; % <-- Recreates a new "t" as a scalar every loop iteration
t(n+1) = t(n) + deltat; % <-- Therefore, t(n) does not exist, or is 0
Also, I don't see you incrementing n anywhere.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by