Create a difference loop from a cumulative matrix

Hello
I have this data filed that I imported into a 831x1 matrix. The numbers in it are cumulative so I need to create a for loop that shows the difference between the row and the one before it so that I can have the pure added quantity in each row. If possible, I would like the first row to stay the same as it was in the imported file.
How do I do this?

4 Kommentare

The file is now a single column matrix. A single column cumulative array. I'm supposed to create a for loop that simply shows the difference between rows.
Why are you sticking with a loop , is it your homework?
Yes. Nevermind I managed to do it.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Raj
Raj am 8 Apr. 2019

0 Stimmen

Suppose 'A' is your 831x1 matrix. Use this:
B=diff(A);
Apure=[A(1);B];
If you are specific with "for loop" then you can use this:
Apure=zeros(831,1);
Apure(1)=A(1);
for i=2:831
Apure(i)=A(i)-A(i-1);
end

3 Kommentare

Mohamed Amine Mouajib
Mohamed Amine Mouajib am 8 Apr. 2019
Bearbeitet: Mohamed Amine Mouajib am 8 Apr. 2019
This doesn't work?
I ended up using
for m=1:length(B)
C=diff(B)
end
given that A was the file matrix, but B is A that starts with a zero column)
It worked
madhan ravi
madhan ravi am 8 Apr. 2019
Bearbeitet: madhan ravi am 8 Apr. 2019
@Mohammed: Why is there a loop in your code?, even without the loop you would get the same result. Basically you are just repeating the same calculation over and over again.
It's supposed to be a loop. The reason I added C is because I have to use it in a calculation.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Mohamed Amine Mouajib
Mohamed Amine Mouajib am 8 Apr. 2019

0 Stimmen

Here's my final script for the whole problem
% Amine Mouajib
% Homeowork 4
% I ommited the text part of the fuel_totalizer.txt file
%in preferences, I changed the command window numerical format from short
% to long g
clc, clear all
disp('Problem 1')
A=[0;importdata('fuel_totalizer.txt')]
y=0
sec=size(A,1)
hour=sec/60
disp('Problem 2,3,&4')
for m=1:length(A)
B= diff(A) % Fuel consumption in each consecutive minute
C= diff(A/60) % Flow rate in lbs/sec for each minute
sum(diff(A)) % Total fuel consumed. Notice it's the same value as the last row of given data matrix
end
disp('Problem 5')
avg=sum(diff(A))/hour %avg fuel consumption for whole flight in lbs/hr
disp('Problem 6')
takeoffmin=1.5*mean(diff(A))% the minimum possible minute flow rate during takeoff in lbs/min
E=B(1:416)% First half of data
D=E(E>takeoffmin)
takeofftime=size(D,1)% in minutes
disp('bonus')
bns=max(C) % the maximum flow rate in lbs/sec
bns2=max(B)
Z=find(B == bns2) % which minute the maximum flow rate in lb/sec occured

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by