How can I integrate a simple slider?

조회 수: 10 (최근 30일)
Alexander Nitzke
Alexander Nitzke 2020년 6월 14일
답변: Ananya Tewari 2020년 6월 19일
I would like to integrate a simple slider in the Plot which controls the variable t_w2w0, but I don't know how I could realise it.
It would be nice, if someone could give me an hint.
sorry for the german comments.
%% Allgemeine Einstellungen
clc % Command Window löschen
clear all % Variablen im Workspace löschen
clf % Löscht alte Diagramme
%% Titel
%disp('Phasenverschiebung der Kraftfunktionen') % Titel
%% Variablen
%n = input('Eingabe Verlustfaktor: '); % Verlustfakor
n = 0.1;
%m = input('Masse: '); % Masse
m = 500;
%s = input('Steifigkeit: '); % Federsteifigkeit
s = 20;
w0 = sqrt(s/m); % Resonanzfrequenz
%t_tf = input('Auflösung (zw. 1-50 Hz): '); % Auflösung
t_tf = 101;
f = logspace(-3,1,t_tf); % Anreg.Frequenz
t_w = 2*pi*f; % Angeregte Kreisfrquenz
l_w = length(t_w); % Länge des Vektors
%t_w2w0 = t_w./w0; % Wertebereich für die erzeugten Frequenzen der Maschine (0-100 Hz);
l_w2w0 = 101; % Frequenz Auflösung
t_w2w0 = logspace(-1,1,t_tf); % Wert der Frequenzverhältnisse
%% Funktionen
t_vu1 = (1-(t_w2w0).^2)+(1i*n.*t_w2w0); % Zähler der Vergrößerung
t_vd1 = 1+1i*n.*t_w2w0; % Nenner der Vergrößerung
t_V = t_vu1./t_vd1; % Vergrößerung
L_V = 20*log10(abs(t_V)); % Einfügedämmmaß
phi_V = angle(t_V); % Phasenwinkel der Vergrößerung in Rad
%%if (phi_V > 3/4*pi) phi_V = phi_V + pi; % Phi im Bereich zwischen 0 und Pi
%%end
%% Plot
n_fig = 1; % neuen Plot erstellen
figure(n_fig); %
% Schleife um einzenle Schritte auszuführen
for n_w = 1:l_w % IF Schleife für die einzelnen Schritte
w2w0 = t_w2w0(n_w); % Schrittweiten Definition
subplot(2,2,1) % Plot Einfügedämmmaß R_E
semilogx(t_w2w0,L_V) % Logarithmisches Ploten von x. w/w0 u. y.
title('Einfügedämmmaß') % Title des Plots
grid on % Gitterlinien einschalten
xticks([0.01 0.1 1 sqrt(2) 10 100]) % x-Achsen skala
xticklabels({'0.01','0.1','1','\surd 2','10','100'}) % x-Achsen skala beschrift
ylim = [min(L_V)*1.2 max(L_V)*1.2]; % Linien größe auf der y - Achse
line(w2w0*[1 1],ylim,'color','r') % Schritt Anzeige
xlabel('\omega / \omega_0') % x - Achsenbeschriftung
ylabel('Einfügedämmmaß R_E [dB]') % y - Achsenbeschriftung
axis([min(t_w2w0) max(t_w2w0) min(L_V)*1.2 max(L_V)*1.2]); % Achsengröße definieren
subplot(2,2,3) % Plot Phasenverschiebung
semilogx(t_w2w0,phi_V) % Logarithmisches Ploten von x. w/w0 u. y. Phase der Vergrößerung
grid on % Gitterlinien einschalten
yticks([0 pi/4 pi/2 3/4*pi pi]) % y-Achsen Skala definieren
yticklabels({'0','\pi/4','\pi/2','3/4 \pi','\pi'}) % Beschriftung des y-Achsen skala
xticks([0.01 0.1 1 sqrt(2) 10 100]) % x-Achsen skala
xticklabels({'0.01','0.1','1','\surd 2','10','100'}) % x-Achsen skala beschrift
title('Phasenverschiebung') % Title des Plots
ylabel('Phasenwinkel in [Rad]') % y - Achsenbeschriftung
xlabel('\omega / \omega_0') % x - Achsenbeschriftung
ylim = [min(phi_V)-0.5 max(phi_V)+0.5]; % Linien größe auf der y - Achse
line(w2w0*[1 1],ylim,'color','r') % Schritt Anzeige
axis([min(t_w2w0) max(t_w2w0) min(phi_V)-0.5 max(phi_V)+0.5]); % Achsengröße definieren
subplot(1,2,2) % Plot der eingeleiteten Fundamentkraft
%pF = L_V(n_w).*exp(1i*phi_V(n_w)); % Kraftzeiger Fundament
pF = abs(1/(t_V(n_w))).*exp(1i*phi_V(n_w));
%pF = abs((t_V(n_w))).*exp(1i*phi_V(n_w));
plot([0,real(pF)],[0,imag(pF)],'r','linewidth',1.5); % Zeiger darstellung eingeleitete Kraft ins Fundament / Rot / Linien dicke 1.5
axis equal % Achsen gleich skalieren
%axis(max(L_V)*[-1 1 -1 1]) % Achsengrenzen definieren
axis ([-5 5 -5 5])
grid on % Gitterlinien einschalten
title('Eingeleitete Kraft in das Fundament') % Title des Plots
xlabel('') % x - Achsenbeschriftung
ylabel('Kraft') % y - Achsenbeschriftung[
%hb = uicontrol('style','slider');
%set(hb,'poition',[1 1,120,20]) %positon 1 pixel von Rechtss weg 1 pixel von unten 120 lang und 20 pixel hoch
M(n_w) = getframe(gcf); % Frames erzeugen
end % Ende der IF-Schleife
%% Movie
N = 2; % Anzahl der Wiederholungen des Videos
FPS = 6; % frames per second
movie(gcf,M,N,FPS) % Film erzeugen

채택된 답변

Ananya Tewari
Ananya Tewari 2020년 6월 19일
Hi Alexander,
I understand that you want to add a slider in the given code.
Slider can be added using uicontrol in MATLAB.
%Here is an example to add Slider
s = uicontrol('Style','Slider','Min',0,'Max',1,'SliderStep',[0.01 0.10]);
Please refer to the below link for more information

추가 답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by