forked from wozy13/DIAMOND
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dpnorm.m
81 lines (60 loc) · 2.01 KB
/
dpnorm.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
function [realmodes_out,mpf_out] = DPnorm(dppair,realmodes,mpf)
%
% Name: DPnorm
%
% Usage: [realmodes,mpf] = DPnorm(dppair,realmodes,mpf)
%
% Description:
% Executes mass-normalization of mode shapes
% based on a single driving point FRF
%
% Version SWD970520
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This matlab source code was originally %
% developed as part of "DIAMOND" at %
% Los Alamos National Laboratory. It may %
% be copied, modified, and distributed in %
% any form, provided: %
% a) This notice accompanies the files and %
% appears near the top of all source %
% code files. %
% b) No payment or commercial services are %
% received in exchange for the code. %
% %
% Original copyright is reserved by the %
% Regents of the University of California, %
% in addition to Scott W. Doebling, Phillip %
% J. Cornwell, Erik G. Straser, and Charles %
% R. Farrar. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nmod = size(realmodes,2);
phin_resp = zeros(size(realmodes));
phin_ref = zeros(size(mpf));
%
% Check size of dppair
%
if size(dppair) ~= [1 2],
disp('ERROR: Driving Point Pair must be Vector of size 1 x 2')
return
end
respdp = dppair(1);
refdp = dppair(2);
%
% Make sure Reference mode shapes are signed so that the DP MPF is positive
%
%for i = 1:size(mpf,2),
% mpf(:,i) = mpf(:,i) * sign(mpf(refdp,i) * realmodes(respdp,i));
%end
%
% Compute normalized driving-point value at respdp (refdp) for each mode
%
normval = sqrt(abs(realmodes(respdp,:).*mpf(refdp,:)));
%
% Compute normalized values at all other DOF using dp as reference value
%
for i = 1:nmod,
realmodes_out(:,i) = realmodes(:,i) / abs(realmodes(respdp,i)) * normval(i);
mpf_out(:,i) = mpf(:,i) / abs(mpf(refdp,i)) * normval(i);
end
return