Как создать синусоидальный сигнал с аддитивным белым гауссовым шумом (WGN) и вывести набор данных в текстовый файл? - PullRequest
1 голос
/ 28 мая 2019
  1. Сценарии сначала создают набор синусоидальных данных для t = [0:0.1:2] с частотой 1Hz.
  2. Затем он добавляет Gaussian random данные, чьи mean is 0 и standard deviation is 0.5 к sine data.
  3. Отображает оба набора данных на одной фигуре.
  4. В конце записывает все шумовые синусоидальные данные в файл с именем data.csv, используя for loopи fprintf функция.

Я написал это, но я хочу использовать randn.

>>frequenciy = [1];
>>curTime = 0; 
>>h = 0.01;
>>for i = 1:length(frequenciy)
    endTime = curTime + 2*pi/frequenciy(i);
    t = [0:0.1:2];
    shift = frequenciy(i)*t(1);
    curTime = endTime;
    plot(t,sin(frequenciy(i)*t-shift))
    hold on
>>end

1 Ответ

1 голос
/ 28 мая 2019

Вам не нужен цикл.

Попробуйте это:

t = 0:0.01:4;

f = 1; %Hz
w = 2*pi*f; 

s = sin(w*t); % original signal with frequency 1Hz
noise = randn(size(s)); % white noise with mu=0, sigma = 1
noise = noise*0.5; % sigma correction
s_noisy = s + noise;

%plot
figure
plot(t, s);
hold on;
plot(t, s_noisy);
hold off;
grid minor;

% save to file
fileID = fopen('sine.csv','w');
fprintf(fileID, '%6.4f\n', s_noisy);
fclose(fileID);

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...