Page 1 of 1

Generate random signal at specific frequency range

Posted: Fri Jan 26, 2024 8:57 am
by amh

Code: Select all

Fs = 500;                                                       % Sampling Frequency (Hz)
t = linspace(0, 10, Fs*10)/Fs;                                  % Time Vector
signal = randn(size(t));                                            % Input
sig= lowpass(signal, 100, Fs, 'ImpulseResponse','iir');             % Initial Vibration Signal
sig = highpass(sig, 0.5, Fs, 'ImpulseResponse','iir');            % Initial Vibration Signal
RMSsig = rms(sig);                                                % RMS Of Generated & Filtered Signal
sig = sig * 0.4/RMSsig;                                            % Scaled Result
Check = rms(sig)                                                 % Check Result

Posted: Fri Feb 09, 2024 8:04 am
by amh

Code: Select all

Fs = 500; % sampling rate 
duration = 10; % seconds
rms_amplitude = 0.4;

samples = Fs*duration;

% time vector 
dt = 1/Fs;
time = (0:samples-1)'*dt;
signal = randn(samples,1);


%% band pass  filter section %%%%%%
f_low = 0.5; % Hz
f_high = 100; % Hz
N_bpf = 4; % order
[b,a] = butter(N_bpf,2/Fs*[f_low f_high]);
signal = filter(b,a,signal);


% check rms value and correct it if needed
signal_rms = sqrt(mean(signal.^2)) % NOK
cor_factor = rms_amplitude/signal_rms;
signal = signal.*cor_factor;
signal_rms = sqrt(mean(signal.^2)) % OK

plot(time,signal,'b');