• Non ci sono risultati.

PROGRAMMI MATLAB RIDUZIONE DEI DATI

N/A
N/A
Protected

Academic year: 2021

Condividi "PROGRAMMI MATLAB RIDUZIONE DEI DATI"

Copied!
10
0
0

Testo completo

(1)

PROGRAMMI MATLAB

RIDUZIONE DEI DATI

Nelle pagine che seguono vengono riportati i programmi MatLab che sono stati

scritti per la riduzione dei dati, ed in particolare:

1. Programma per ricavare le sollecitazioni nel sistema di riferimento

dinamometro a partire dai segnali provenienti dai ponti estensimetrici, facendo

uso della matrice di calibrazione sperimentale.

(2)

%Script per il calcolo delle forze dato il vettore voltaggi (v_eff) e la matrice di %calibrazione (A) con il metodo dei minimi quadrati:

% f e' il vettore che minimizza la seguente differenza: % (v_eff-A*f)^2

%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

%!!!!!!!!!!!!!!!NB=le forze ottenute sono in N e i momenti in Nm!!!!!!!!!!!!!!!!!!! %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! load A.txt; load volts.txt; load tara.txt; v = (volts-tara).*1000; v_eff = mean(v,1).'; B=A'*A; c=A'*v_eff; f=inv(B)*c;

save forze.txt f -ascii -tabs;

2. Prima stesura del programma per ricavare la matrice di rigidezza generalizzata

e le componenti della forza radiale nel sistema di riferimento laboratorio a

partire dai segnali provenienti dai ponti estensimetrici.

%Calcolo delle componenti di forza e momento laterali (X ed Y) agenti sull'induttore/pompa %secondo quanto suggerito su FESTIP:

% F = F_0+A*e %Dove:

% F_0=componente stazionaria delle forze % A = matrice di rigidezza [2x2]

% e = vettore eccentricità nel sistema di riferimento fisso (Laboratorio) %Ed in maniera del tutto analoga:

% M = M_0+A_M*eps load data.txt;

load dry.txt; %NOTA:il vettore da prendere è quello corrispondente alle velocità ed % ed eccentricità usate!!!!

load buoy.txt; %vettore della spinta di galleggiamento

%a seconda di come vengono acquisiti i dati, fare qui media della storia %temporale dei carichi!!!

data_eff = data_av-(dry+buoy);

T_c = ; %assegnare tempo di un "ciclo"

m = ; %T_c = m*T (T =(2pi/OMEGA) con OMEGA vel.ang. albero motore) n = ; %T_c = abs(n)*tau (tau =(2pi/omega) con omega vel.ang. di whirl !in modulo!) N = ; %numero di punti tra 0 e T_c

OMEGA = ; omega = ;

(3)

%CALCOLO DELLE FORZE F_X F_Y

%Inizializzazione dei coefficienti dello sviluppo in serie di Fourier %utili al calcolo di F_0 e A a_0Fx = 0; a_0Fy = 0; a_mFx = 0; a_mFy = 0; a_2mFx = 0; a_2mFy = 0; a_mnFx = 0; a_mnFy = 0; a_m_nFx = 0; a_m_nFy = 0; a_n_mFx = 0; a_m_nFy = 0; b_mFx = 0; b_mFy = 0; b_2mFx = 0; b_2mFy = 0; b_mnFx = 0; b_mnFy = 0; b_m_nFx = 0; b_m_nFy = 0; b_n_mFx = 0; b_n_mFy = 0;

%Calcolo dei coefficienti dello sviluppo in serie di Fourier for i=1:N

if i=1 | i=N

a_0Fx = a_0Fx+0.5*data(i,j); %dove j è la riga (colonna?) di data relativa ad F_x!!!! a_0Fy = a_0Fy+0.5*data(i,k); %dove k è la riga (colonna?) di data relativa ad F_y!!!! a_mFx = a_mFx+0.5*(data(i,j)*cos(OMEGA*i*Dt)); a_mFy = a_mFy+0.5*(data(i,k)*cos(OMEGA*i*Dt)); a_2mFx = a_2mFx+0.5*(data(i,j)*cos(2*OMEGA*i*Dt)); a_2mFy = a_2mFy+0.5*(data(i,k)*cos(2*OMEGA*i*Dt)); a_mnFx = a_mnFx+0.5*(data(i,j)*cos(2*((m+n)/m)*OMEGA*i*Dt)); a_mnFy = a_mnFy+0.5*(data(i,k)*cos(2*((m+n)/m)*OMEGA*i*Dt)); a_m_nFx = a_m_nFx+0.5*(data(i,j)*cos(2*((m-n)/m)*OMEGA*i*Dt)); a_m_nFy = a_m_nFy+0.5*(data(i,k)*cos(2*((m-n)/m)*OMEGA*i*Dt)); a_n_mFx = a_n_mFx+0.5*(data(i,j)*cos(2*((n-m)/m)*OMEGA*i*Dt)); a_n_mFy = a_n_mFy+0.5*(data(i,k)*cos(2*((n-m)/m)*OMEGA*i*Dt)); b_mFx = b_mFx+0.5*(data(i,j)*sin(OMEGA*i*Dt)); b_mFy = b_mFy+0.5*(data(i,k)*sin(OMEGA*i*Dt)); b_2mFx = b_2mFx+0.5*(data(i,j)*sin(2*OMEGA*i*Dt)); b_2mFy = b_2mFy+0.5*(data(i,k)*sin(2*OMEGA*i*Dt)); b_mnFx = b_mnFx+0.5*(data(i,j)*sin(2*((m+n)/m)*OMEGA*i*Dt)); b_mnFy = b_mnFy+0.5*(data(i,k)*sin(2*((m+n)/m)*OMEGA*i*Dt)); b_m_nFx = b_m_nFx+0.5*(data(i,j)*sin(2*((m-n)/m)*OMEGA*i*Dt)); b_m_nFy = b_m_nFy+0.5*(data(i,k)*sin(2*((m-n)/m)*OMEGA*i*Dt)); b_n_mFx = b_n_mFx+0.5*(data(i,j)*sin(2*((n-m)/m)*OMEGA*i*Dt)); b_n_mFy = b_n_mFy+0.5*(data(i,k)*sin(2*((n-m)/m)*OMEGA*i*Dt)); else

(4)

a_0Fx = a_0Fx+data(i,j); a_0Fy = a_0Fy+data(i,k); a_mFx = a_mFx+(data(i,j)*cos(OMEGA*i*Dt)); a_mFy = a_mFy+(data(i,k)*cos(OMEGA*i*Dt)); a_2mFx = a_2mFx+(data(i,j)*cos(2*OMEGA*i*Dt)); a_2mFy = a_2mFy+(data(i,k)*cos(2*OMEGA*i*Dt)); a_mnFx = a_mnFx+(data(i,j)*cos(2*((m+n)/m)*OMEGA*i*Dt)); a_mnFy = a_mnFy+(data(i,k)*cos(2*((m+n)/m)*OMEGA*i*Dt)); a_m_nFx = a_m_nFx+(data(i,j)*cos(2*((m-n)/m)*OMEGA*i*Dt)); a_m_nFy = a_m_nFy+(data(i,k)*cos(2*((m-n)/m)*OMEGA*i*Dt)); a_n_mFx = a_n_mFx+(data(i,j)*cos(2*((n-m)/m)*OMEGA*i*Dt)); a_n_mFy = a_n_mFy+(data(i,k)*cos(2*((n-m)/m)*OMEGA*i*Dt)); b_mFx = b_mFx+(data(i,j)*sin(OMEGA*i*Dt)); b_mFy = b_mFy+(data(i,k)*sin(OMEGA*i*Dt)); b_2mFx = b_2mFx+(data(i,j)*sin(2*OMEGA*i*Dt)); b_2mFy = b_2mFy+(data(i,k)*sin(2*OMEGA*i*Dt)); b_mnFx = b_mnFx+(data(i,j)*sin(2*((m+n)/m)*OMEGA*i*Dt)); b_mnFy = b_mnFy+(data(i,k)*sin(2*((m+n)/m)*OMEGA*i*Dt)); b_m_nFx = b_m_nFx+(data(i,j)*sin(2*((m-n)/m)*OMEGA*i*Dt)); b_m_nFy = b_m_nFy+(data(i,k)*sin(2*((m-n)/m)*OMEGA*i*Dt)); b_n_mFx = b_n_mFx+(data(i,j)*sin(2*((n-m)/m)*OMEGA*i*Dt)); b_n_mFy = b_n_mFy+(data(i,k)*sin(2*((n-m)/m)*OMEGA*i*Dt)); end; end; a_0Fx = a_0Fx/N; a_0Fy = a_0Fy/N; a_mFx = a_mFx/N; a_mFy = a_mFy/N; a_2mFx = a_2mFx/N; a_2mFy = a_2mFy/N; a_mnFx = a_mnFx/N; a_mnFy = a_mnFy/N; a_m_nFx = a_m_nFx/N; a_m_nFy = a_m_nFy/N; a_n_mFx = a_n_mFx/N; a_n_mFy = a_n_mFy/N; b_mFx = b_mFx/N; b_mFy = b_mFy/N; b_2mFx = b_2mFx/N; b_2mFy = b_2mFy/N; b_mnFx = b_mnFx/N; b_mnFy = b_mnFy/N; b_m_nFx = b_m_nFx/N; b_m_nFy = b_m_nFy/N; b_n_mFx = b_n_mFx/N; b_n_mFy = b_n_mFy/N;

%Calcolo di F_0 (componente stazionaria) F_0x = 0.5*(b_mFx-a_mFy);

F_0y = 0.5*(a_mFx+b_mFy); F_0(1) = F_0x;

(5)

save F_0.txt F_0 -ascii -tabs;

%Calcolo di A (matrice di rigidezza generalizzata)

%NOTA:NON HO CAPITO XCHE'MA NELLA TESI DI MENONI LO SVILUPPO IN SERIE %DI FOURIER COMINCIA CON UN TERMINE a_0/2,INVECE CHE a_0...

%Qualora si decidesse di adottare uno sviluppo con a_0,moltiplicare tutti %i termini del tipo a_0F per due!!!!!!!!!!!!!!!!!!!!

if n=0 A_XX = 0.5*(b_mFx-a_mFy); A_XY = 0; A_YX = 0.5*(a_mFx+b_mFy); A_YY = 0; else if n=m A_XX = 0.5*(a_0Fx+b_2mFx-a_2mFy); A_XY = 0.5*(-a_0Fy+a_2mFx+b_2mFy); A_YX = 0.5*(a_0Fy+a_2mFx+b_2mFy); A_YY = 0.5*(a_0Fx+a_2mFy-b_2mFx); else if n=-m A_XX = 0.5*(a_0Fx+b_2mFx-a_2mFy); A_XY = 0.5*(a_0Fy-a_2mFx-b_2mFy); A_YX = 0.5*(a_0Fy+a_2mFx+b_2mFy); A_YY = 0.5*(-a_0Fx-a_2mFy+b_2mFx); else if abs(n)<m A_XX = 0.5*(b_mnFx+b_m_nFx-a_mnFy-a_m_nFy);

A_XY = 0.5*(b_mnFy+a_mnFx-b_m_nFy-a_m_nFx); %*Corretto al 10/10/2003 A_YX = 0.5*(a_mnFx+a_m_nFx+b_mnFy+b_m_nFy); A_YY = 0.5*(a_mnFy-a_m_nFy+b_m_nFx-b_mnFx); else A_XX = 0.5*(b_mnFx+b_n_mFx-a_mnFy+a_n_mFy); A_XY = 0.5*(a_n_mFx+a_mnFx-b_n_mFy+b_mnFy); A_YX = 0.5*(a_mnFx-a_n_mFx+b_mnFy+b_n_mFy); A_YY = 0.5*(-b_mnFx+a_mnFy+b_n_mFx+a_n_mFy); end; end; end; end;

A_RD(1,1) = A_XX; A_RD(1,2) = A_XY; A_RD(2,1) = A_YX; A_RD(2,2) = A_YY; save A_RD.txt A_RD -ascii -tabs;

%Calcolo di F_RD for i=1:N

F_RDx(i) = A_XX*cos(n/m*OMEGA*i*Dt)+A_XY*sin(n/m*OMEGA*i*Dt); F_RDy(i) = A_YX*cos(n/m*OMEGA*i*Dt)+A_YY*sin(n/m*OMEGA*i*Dt); end;

save F_RDx.txt F_RDx -ascii -tabs; save F_RDy.txt F_RDy -ascii -tabs;

(6)

for i=1:N t(i)=i*Dt; end; figure plot(t,F_RDx,'r-'); title('Componente Rotodinamica F_X'); figure plot(t,F_RDy,'b-');

title('Componente Rotodinamica F_Y'); %CALCOLO DEI MOMENTI M_X M_Y

%Inizializzazione dei coefficienti di Fourier utili al calcolo di M_0 e AM a_0Mx = 0; a_0My = 0; a_mMx = 0; a_mMy = 0; a_2mMx = 0; a_2mMy = 0; a_mnMx = 0; a_mnMy = 0; a_m_nMx = 0; a_m_nMy = 0; a_n_mMx = 0; a_n_mMy = 0; b_mMx = 0; b_mMy = 0; b_2mMx = 0; b_2mMy = 0; b_mnMx = 0; b_mnMy = 0; b_m_nMx = 0; b_m_nMy = 0; b_n_mMx = 0; b_n_mMy = 0;

%Calcolo dei coefficienti dello sviluppo in serie di Fourier for i=1:N

if i=1 | i=N

a_0Mx = a_0Mx+0.5*data(i,h); %dove h è la riga di data relativa ad M_x!!!! a_0My = a_0My+0.5*data(i,l); %dove l è la riga di data relativa ad M_y!!!! a_mMx = a_mMx+0.5*(data(i,h)*cos(OMEGA*i*Dt)); a_mMy = a_mMy+0.5*(data(i,l)*cos(OMEGA*i*Dt)); a_2mMx = a_2mMx+0.5*(data(i,h)*cos(2*OMEGA*i*Dt)); a_2mMy = a_2mMy+0.5*(data(i,l)*cos(2*OMEGA*i*Dt)); a_mnMx = a_mnMx+0.5*(data(i,h)*cos(2*((m+n)/m)*OMEGA*i*Dt)); a_mnMy = a_mnMy+0.5*(data(i,l)*cos(2*((m+n)/m)*OMEGA*i*Dt)); a_m_nMx = a_m_nMx+0.5*(data(i,h)*cos(2*((m-n)/m)*OMEGA*i*Dt)); a_m_nMy = a_m_nMy+0.5*(data(i,l)*cos(2*((m-n)/m)*OMEGA*i*Dt)); a_n_mMx = a_n_mMx+0.5*(data(i,h)*cos(2*((n-m)/m)*OMEGA*i*Dt)); a_n_mMy = a_n_mMy+0.5*(data(i,l)*cos(2*((n-m)/m)*OMEGA*i*Dt)); b_mMx = b_mMx+0.5*(data(i,h)*sin(OMEGA*i*Dt)); b_mMy = b_mMy+0.5*(data(i,l)*sin(OMEGA*i*Dt)); b_2mMx = b_2mMx+0.5*(data(i,h)*sin(2*OMEGA*i*Dt));

(7)

b_2mMy = b_2mMy+0.5*(data(i,l)*sin(2*OMEGA*i*Dt)); b_mnMx = b_mnMx+0.5*(data(i,h)*sin(2*((m+n)/m)*OMEGA*i*Dt)); b_mnMy = b_mnMy+0.5*(data(i,l)*sin(2*((m+n)/m)*OMEGA*i*Dt)); b_m_nMx = b_m_nMx+0.5*(data(i,h)*sin(2*((m-n)/m)*OMEGA*i*Dt)); b_m_nMy = b_m_nMy+0.5*(data(i,l)*sin(2*((m-n)/m)*OMEGA*i*Dt)); b_n_mMx = b_n_mMx+0.5*(data(i,h)*sin(2*((n-m)/m)*OMEGA*i*Dt)); b_n_mMy = b_n_mMy+0.5*(data(i,l)*sin(2*((n-m)/m)*OMEGA*i*Dt)); else a_0Mx = a_0Mx+data(i,h); a_0My = a_0My+data(i,l); a_mMx = a_mMx+(data(i,h)*cos(OMEGA*i*Dt)); a_mMy = a_mMy+(data(i,l)*cos(OMEGA*i*Dt)); a_2mMx = a_2mMx+(data(i,h)*cos(2*OMEGA*i*Dt)); a_2mMy = a_2mMy+(data(i,l)*cos(2*OMEGA*i*Dt)); a_mnMx = a_mnMx+(data(i,h)*cos(2*((m+n)/m)*OMEGA*i*Dt)); a_mnMy = a_mnMy+(data(i,l)*cos(2*((m+n)/m)*OMEGA*i*Dt)); a_m_nMx = a_m_nMx+(data(i,h)*cos(2*((m-n)/m)*OMEGA*i*Dt)); a_m_nMy = a_m_nMy+(data(i,l)*cos(2*((m-n)/m)*OMEGA*i*Dt)); a_n_mMx = a_n_mMx+(data(i,h)*cos(2*((n-m)/m)*OMEGA*i*Dt)); a_n_mMy = a_n_mMy+(data(i,l)*cos(2*((n-m)/m)*OMEGA*i*Dt)); b_mMx = b_mMx+(data(i,h)*sin(OMEGA*i*Dt)); b_mMy = b_mMy+(data(i,l)*sin(OMEGA*i*Dt)); b_2mMx = b_2mMx+(data(i,h)*sin(2*OMEGA*i*Dt)); b_2mMy = b_2mMy+(data(i,l)*sin(2*OMEGA*i*Dt)); b_mnMx = b_mnMx+(data(i,h)*sin(2*((m+n)/m)*OMEGA*i*Dt)); b_mnMy = b_mnMy+(data(i,l)*sin(2*((m+n)/m)*OMEGA*i*Dt)); b_m_nMx = b_m_nMx+(data(i,h)*sin(2*((m-n)/m)*OMEGA*i*Dt)); b_m_nMy = b_m_nMy+(data(i,l)*sin(2*((m-n)/m)*OMEGA*i*Dt)); b_n_mMx = b_n_mMx+(data(i,h)*sin(2*((n-m)/m)*OMEGA*i*Dt)); b_n_mMy = b_n_mMy+(data(i,l)*sin(2*((n-m)/m)*OMEGA*i*Dt)); end; end; a_0Mx = a_0Mx/N; a_0My = a_0My/N; a_mMx = a_mMx/N; a_mMy = a_mMy/N; a_2mMx = a_2mMx/N; a_2mMy = a_2mMy/N; a_mnMx = a_mnMx/N; a_mnMy = a_mnMy/N; a_m_nMx = a_m_nMx/N; a_m_nMy = a_m_nMy/N; a_n_mMx = a_n_mMx/N; a_n_mMy = a_n_mMy/N; b_mMx = b_mMx/N; b_mMy = b_mMy/N; b_2mMx = b_2mMx/N; b_2mMy = b_2mMy/N; b_mnMx = b_mnMx/N; b_mnMy = b_mnMy/N; b_m_nMx = b_m_nMx/N; b_m_nMy = b_m_nMy/N; b_n_mMx = b_n_mMx/N; b_n_mMy = b_n_mMy/N;

(8)

%Calcolo di M_0 (componente stazionaria) M_0x = 0.5*(b_mMx-a_mMy);

M_0y = 0.5*(a_mMx+b_mMy); M_0(1) = M_0x;

M_0(2) = M_0y;

save M_0.txt M_0 -ascii -tabs;

%Calcolo di AM (matrice di rigidezza generalizzata)

%VEDERE NOTA ALLEGATA AL PARAGRAFO DEDICATO ALLE FORZE!!!! if n=0 AM_XX = 0.5*(b_mMx-a_mMy); AM_XY = 0; AM_YX = 0.5*(a_mMx+b_mMy); AM_YY = 0; else iM n=m AM_XX = 0.5*(a_0Mx+b_2mMx-a_2mMy); AM_XY = 0.5*(-a_0My+a_2mMx+b_2mMy); AM_YX = 0.5*(a_0My+a_2mMx+b_2mMy); AM_YY = 0.5*(a_0Mx+a_2mMy-b_2mMx); else iM n=-m AM_XX = 0.5*(a_0Mx+b_2mMx-a_2mMy); AM_XY = 0.5*(a_0My-a_2mMx-b_2mMy); AM_YX = 0.5*(a_0My+a_2mMx+b_2mMy); AM_YY = 0.5*(-a_0Mx-a_2mMy+b_2mMx); else iM abs(n)<m AM_XX = 0.5*(b_mnMx+b_m_nMx-a_mnMy-a_m_nMy); AM_XY = 0.5*(b_mnMy+a_mnMx-b_m_nMy-a_m_nMx); AM_YX = 0.5*(a_mnMx+a_m_nMx+b_mnMy+b_m_nMy); AM_YY = 0.5*(a_mnMy-a_m_nMy+b_m_nMx-b_mnMx); else AM_XX = 0.5*(b_mnMx+b_n_mMx-a_mnMy+a_n_mMy); AM_XY = 0.5*(a_n_mMx+a_mnMx-b_n_mMy+b_mnMy); AM_YX = 0.5*(a_mnMx-a_n_mMx+b_mnMy+b_n_mMy); AM_YY = 0.5*(-b_mnMx+a_mnMy+b_n_mMx+a_n_mMy); end; end; end; end;

AM_RD(1,1) = AM_XX; AM_RD(1,2) = AM_XY; AM_RD(2,1) = AM_YX; AM_RD(2,2) = AM_YY; save AM_RD.txt AM_RD -ascii -tabs;

%Calcolo di M_RD for i=1:N

(9)

M_RDx(i) = AM_XX*cos(n/m*OMEGA*i*Dt)+AM_XY*sin(n/m*OMEGA*i*Dt); M_RDy(i) = AM_YX*cos(n/m*OMEGA*i*Dt)+AM_YY*sin(n/m*OMEGA*i*Dt); end;

save M_RDx.txt M_RDx -ascii -tabs; save M_RDy.txt M_RDy -ascii -tabs; figure

plot(t,M_RDx,'r-');

title('Componente Rotodinamica M_X'); figure

plot(t,M_RDb,'b-');

title('Componente Rotodinamica M_Y');

(10)

Riferimenti

Documenti correlati