Matlab - Interferencia en gráfica al introducir una línea de código

 
Vista:
sin imagen de perfil
Val: 65
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Interferencia en gráfica al introducir una línea de código

Publicado por José (35 intervenciones) el 28/05/2020 05:10:42
Buena noche.

Les agradecería si me ayudan a resolver el siguiente inconveniente:

Estoy graficando normal lo siguiente:

Captura2

Al introducir la siguiente línea de código para realizar la integración de la serie de aceleraciones para obtener la velocidad y el desplazamiento, el cual necesito para hacer espectros de respuesta totales, me surge el siguiente inconveniente al graficar los espectros de respuesta D-V-A que se mostraron en la anterior imagen.

1
2
3
v_sis = machethomson(transpose(a_sis'),1/dt,.1,1);
d_sis = machethomson(transpose(a_sis'),1/dt,.1,2);

machethomson es una función la cual esta descrita por el siguiente código:

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
function [xint] = machethomson(x,fs,fc,order)
%MACHETHOMSON Frequency domain integration with ideal low pass filtering
%MACHETHOMSON(x, fs, fc, order)
%   x:      data. Matrix with rows of data.
%   fs:     sampling frequency in Hz.
%   fc:     lowpass frequency cutoff, 0 <= fc < 0.5 fs
%           (Default value: 0)
%   order:  order or number of times to be integrated
%           (Default value: 1)
%
%   Peter Thomson
%   23 March 2011
 
error(nargchk(2,4,nargin))
if nargin == 2, fc = 0; order = 1; end
if nargin == 3, order = 1; if fc >= 0.5*fs, error('fc must be less than 0.5 fs'), end, end
[a,b]=size(x);
if a > b, x=x';n=a;d=b; else n=b;d=a; end  %% make rows of data
xf=fft(x');                             %% fourier transform of data
xf=xf';
w=2*pi.*fs*(n-1)/n.*linspace(0,1,n);    %% full frequency vector
ind=find(w>=fc*2*pi,1,'first');         %% find cutoff frequency index
w=w(1:ceil((n+1)/2)); xf=xf(:,1:ceil((n+1)/2));   %% reduced vectors
%% Filter frequency vector such that operations are carried out for each
%% row and values below cutoff frequency made very large
wv=ones(d,1)*[1e99*ones(1,ind) w(ind+1:end)];
xintuf=(1./(-1i.*wv).^order).*xf;       %% integrate each term
plot(abs(xintuf))
if rem(n,2)==0                          %%depending on odd/even number of points
    xintuf=[xintuf fliplr(conj(xintuf(:,2:end-1)))];
else
    xintuf=[xintuf fliplr(conj(xintuf(:,2:end)))];
end
 xint=detrend(real(ifft(xintuf')))';
 xint=  xint - xint(:,1);
end

Este es el error que se genera encerrado en color rojo con respecto a la imagen inicial.

Captura3
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder