trying to calculate the central diff approximation

1 vue (au cours des 30 derniers jours)
isamh
isamh le 10 Fév 2020
Commenté : Jim Riggs le 10 Fév 2020
i tried multiple ways but none of them worked. kind of stuck and not sure what to do. what i'm trying to do is find current value that is equal to one ahead minus one below all divided by .2
code is:
Phase_1 = DATA(DATA(:,4)==1,:);
Vroll_avg1_1 = movsum((1/5).*Phase_1(:,3),[2 2]);
Vdi_1 = movsum(1/5.*Vroll_avg1_1,[2 2]);
---> first try: Adi_1 = [Vdi_1(2:Vdi_1+1,:)-Vdi_1(1:Vdi_1-1,:)/(2*T)];
---> second try: Adi_1 = ((Vdi_1(2:end+1) - Vdi_1(1:end-1))/(2*T)); % error says index exceeds array bounds. i understand why but how((2:end+1)) would i get it to work?
---> third try: %K = length(Vdi_1);
%Q = length(Vti_1);
%for M = 2:(length(Vdi_1)-1)
% Adi_1 = ((Vdi_1 - Vdi_1)./(2.*T));
%end
%Adi_1 = (Vdi_1(2) - Vdi_1(1))./(2.*T);
%Adi_1(length(Vdi_1)) = (Vdi_1(K) - Vdi_1(K))./(2.*T);
really need help, please try to help me figure this out.

Réponse acceptée

Jim Riggs
Jim Riggs le 10 Fév 2020
Modifié(e) : Jim Riggs le 10 Fév 2020
There is a Matlab function "diff" which will do this.
Otherwise, your subscripts must all match (2:end-1)
Adi_1 = diff(Vdi_1);
or
for i=2:numel(Vdi_1)-1
Adi_1(i) = (Vdi_1(i+1) - Vdi_1(i-1))/2/T;
end
  11 commentaires
isamh
isamh le 10 Fév 2020
Modifié(e) : isamh le 10 Fév 2020
im so sorry jim, just got it to work. forsome reason i had one of the numel as nume1 with the #1. got it to work, thanks!
Jim Riggs
Jim Riggs le 10 Fév 2020
Very good.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by