• 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

Allora esiste una base di V nella quale A si rappresenta con una matrice triangolare

Dimostreremo che, se M è la matrice di adiacenza di un grafo non orientato, la matrice potenza M n di base M ed esponente n (calcolata con il prodotto righe per colonne) contiene

Il rimborso programmato viene eseguito in base al valore unitario della quota del giorno coincidente (o immediatamente successivo nel caso di Borsa chiusa o di festività

Le prospettive globali sulla crescita nel corso della prima parte del 2021 hanno espresso un significativo sostegno per l’apprezzamento delle materie prime: in

 Le differenze di cambio derivanti dalla conversione delle voci espresse in valuta estera sono contabilizzate in voci separate nella Relazione tenendo distinte quelle realizzate

Due corpi di massa M=4kg e m=1kg, sono legati per mezzo di una fune e tirati verso destra con una forza pari a 22N.. Calcolare l’accelerazione del sistema e la tensione

Se una matrice ` e sparsa ` e conveniente memorizare solo dove si trovano gli elementi non nulli e il loro valore.. I Il comando sparse di Matlab memoriza una matrice in

Z-1 indica che l’asse del mandrino verrà posizionato alla quota di valore ASSOLUTO “-1”, cioè 1mm sotto il piano dello ZERO PEZZO, per effettuare una passata di.. spianatura