Hier ist der ganze Programmcode. Sie muss vorher separat gespeichert werden. Im Anhang habe ich die Datei ebenfalls beigefügt.
Code:
function fdm81() global r1 r2 r4 srd y m;
L=3.5;
%% Admittanz figure(1);clf;
subplot(211);hold on;axis([0 L -130-30]);
title('Admittanz');
ylabel('Amplitude in dB');
subplot(212);hold on;axis([0 L -11]);
xlabel('Abstand Steigbügel in cm');
ylabel('Phase in \pi');
%% Druck figure(2);clf;
subplot(211);hold on;axis([0 L 70170]);
title('Druck');
ylabel('Amplitude in dB');
subplot(212);hold on;axis([0 L -91]);
xlabel('Abstand Steigbügel in cm');
ylabel('Phase in \pi');
%% Auslenkung figure(3);clf;
subplot(211);hold on;axis([0 L -7030]);
title('Auslenkung BM');
ylabel('Amplitude in dB');
subplot(212);hold on;axis([0 L -91]);
xlabel('Abstand Steigbügel in cm');
ylabel('Phase in \pi');
drawnow;
%% Schleife mit 5 Frequenzen for fi=1:5,
w=2*pi*200*(2^fi);
s=i*w;
srd=i*4*rho*w*dy*r1;
p0p=2*rho*w^2;
% Berechnung der Admittanz für alle x
x=transpose(linspace(0,xl,n));
y=(k0*exp(k1*x)/s + r0 + m0*s).^(-1);
% Lösung der Blockmatrizen % Durchgang von oben nach unten
p(:,1)=-2*dx*p0p;
a(:,:,1)=mxadd(1);
b=inv(reshape(a(:,:,1),m,m));
a(:,:,1)=reshape(-2*b,1,m,m);
p(:,1)=b*p(:,1);
for k=2:n-1,
a(:,:,k)=a(:,:,k-1)+mxadd(k);
b=inv(reshape(a(:,:,k),m,m));
a(:,:,k)=reshape(-b,1,m,m);
p(:,k)=b*p(:,k-1);
end % Durchgang von unten nach oben for k=n-2:-1:1,
b=reshape(a(:,:,k),m,m);
p(:,k)=p(:,k)-b*p(:,k+1);
end
d=y.*p(1,:).'./s;
%% Algorithmus function aa=mxadd(k) global r1 r2 r4 srd y m;
aa=zeros(m,m,1);
aa(1,1,1)=r4+y(k)*srd;
aa(1,2,1)=-r2;
for j=2:m-1,
aa(j,j-1,1)=-r1;
aa(j,j,1)=r4;
aa(j,j+1,1)=-r1;
end
aa(m,m-1,1)=-r2;
aa(m,m,1)=r4;
%% Transformation von Phase und Amplitude in dB function y=dbmag(x)
y=20*real(log10(max(1e-9,x)));
Besten Dank, dass hat super geklappt. Die Idee mit dem Minimum der Positionswerte ist sehr elegant.
Gruß Henrik123
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.