2015-11-17 3 views
0

J'écris un code sur matlab pour un exercice pour dessiner la forme de mode d'un système. L'image que je reçois est correcte, mais je veux pouvoir changer de couleur et rendre la ligne plus épaisse. Voici mon code:Personnalisez la fonction de tige sur matlab

clear all 
close all 
clc 
%% Assignment 3 

% X Direction 
% Natural Frequencies and Damping Ratios 
wn_X1=354.3; d_X1=0.038; 
wn_X2=467.6; d_X2=0.049; 

% Damped Frequencies 
wd_X1=wn_X1*sqrt(1-(d_X1)^2); 
wd_X2=wn_X2*sqrt(1-(d_X2)^2); 

% Residues in X direction 
sX1_11=1.9890*10^-6; nuX1_11=-1.9644*10^-5; 
sX2_11=1.4978*10^-5; nuX2_11=-4.4070*10^-5; 
sX1_12=-4.4952*10^-6; nuX1_12=-1.2556*10^-5; 
sX2_12=7.0287*10^-6; nuX2_12=-3.3470*10^-5; 


alphaX11_1=2*(d_X1*wn_X1*sX1_11-wd_X1*nuX1_11); 
alphaX12_1=2*(d_X1*wn_X1*sX1_12-wd_X1*nuX1_12); 
alphaX11_2=2*(d_X2*wn_X2*sX2_11-wd_X2*nuX2_11); 
alphaX12_2=2*(d_X2*wn_X2*sX2_12-wd_X2*nuX2_12); 

betaX11_1=2*sX1_11; 
betaX12_1=2*sX1_12; 
betaX11_2=2*sX2_11; 
betaX12_2=2*sX2_12; 

% Complex modal matrix in X direction 
sX1=wd_X1*1j; sX2=wd_X2*1j; 
u_11=sqrt(alphaX11_1+betaX11_1*sX1); 
u_21=sqrt(alphaX12_1+betaX12_1*sX1); 
u_12=sqrt(alphaX11_2+betaX11_2*sX2); 
u_22=sqrt(alphaX12_2+betaX12_2*sX2); 

U=[u_11 u_12; u_21 u_22] 

% Y Direction 
% Natural Frequencies and Damping Ratios 
wn_Y1=225.6; d_Y1=0.038; 
wn_Y2=386.6; d_Y2=0.049; 

% Damped Frequencies 
wd_Y1=wn_Y1*sqrt(1-(d_Y1)^2); 
wd_Y2=wn_Y2*sqrt(1-(d_Y2)^2); 

% Residues in X direction 
sY1_11=8.5993*10^-6; nuY1_11=-1.5280*10^-5; 
sY2_11=1.4732*10^-5; nuY2_11=-4.9648*10^-5; 
sY1_12=4.0081*10^-6; nuY1_12=-1.0945*10^-5; 
sY2_12=4.4653*10^-6; nuY2_12=-3.3297*10^-5; 


alphaY11_1=2*(d_Y1*wn_Y1*sY1_11-wd_Y1*nuY1_11); 
alphaY12_1=2*(d_Y1*wn_Y1*sY1_12-wd_Y1*nuY1_12); 
alphaY11_2=2*(d_Y2*wn_Y2*sY2_11-wd_Y2*nuY2_11); 
alphaY12_2=2*(d_Y2*wn_Y2*sY2_12-wd_Y2*nuY2_12); 

betaY11_1=2*sX1_11; 
betaY12_1=2*sX1_12; 
betaY11_2=2*sX2_11; 
betaY12_2=2*sX2_12; 

% Complex modal matrix in X direction 
sY1=wd_Y1*1j; sY2=wd_Y2*1j; 
v_11=sqrt(alphaY11_1+betaY11_1*sY1); 
v_21=sqrt(alphaY12_1+betaY12_1*sY1); 
v_12=sqrt(alphaY11_2+betaY11_2*sY2); 
v_22=sqrt(alphaY12_2+betaY12_2*sY2); 

V=[v_11 v_12; v_21 v_22] 

% Plot mode shapes in X Direction 
UU=real(U); 
omegaX=[wn_X1 wn_X2]; 
subplot(2,1,1) 
plot(UU,'--'); 
xlabel('Elements','FontSize',25); ylabel('Mode amplitude','FontSize',25); 
title(['Mode shapes in X direction, \omega=' sprintf('%4.2f, ',omegaX)],'FontSize',25); 
axis([0.5 2.5 -0.2 0.3]); 
set(gca,'XTick',[1:2],'FontSize',20); 
Leg=legend('Mode 1','Mode 2'); 
set(Leg,'FontSize',25); 
hold on 
stem(UU,'filled','MarkerSize',11); 
hold on 

% Plot mode shapes in Y Direction 
VV=real(V); 
omegaY=[wn_Y1 wn_Y2]; 
subplot(2,1,2) 
plot(VV,'--'); 
xlabel('Elements','FontSize',25); ylabel('Mode amplitude','FontSize',25); 
title(['Mode shapes in Y direction, \omega=' sprintf('%4.2f, ',omegaY)],'FontSize',25); 
axis([0.5 2.5 -0.2 0.3]); 
set(gca,'XTick',[1:2],'FontSize',20); 
Leg=legend('Mode 1','Mode 2'); 
set(Leg,'FontSize',25); 
hold on 
stem(VV,'filled','MarkerSize',11); 
hold on 

Le code est runable, je veux juste l'intrigue de regarder un peu plus agréable. Vive les gars D

+1

'plot' vous permet de spécifier les couleurs, lineWidth etc: [Matlab plot doc] (http://www.mathworks.com /help/matlab/ref/plot.html#namevaluepairarguments) ... Idem pour 'stem': [document racine MATLAB] (http://www.mathworks.com/help/matlab/ref/stem.html#namevaluepairarguments – Geoff

+0

Si je spécifie 'b', je reçois les 4 points en bleu, mais je veux les points pour le mode 1 en bleu et celui pour le mode 2 en vert. –

+0

Que représentent les matrices 'U' et' V'? Je vois que vous tracez la matrice entière, et la façon dont les matrices sont placées est faite sur une colonne. Chaque colonne obtient une couleur distincte. – rayryeng

Répondre

0

J'ai créé une autre commande pour chaque colonne comme Geoff a suggéré