Если я хочу построить PSD простой синусоидальной волны в Matlab, я хотел бы сделать что-то вроде следующего:От SIMULINK до рабочего пространства FFT?
Fs = 1000;
t = 0:1/Fs:1-(1/Fs);
x = cos(2*pi*100*t) ;
N = length(x);
xdft = fft(x);
xdft = xdft(1:N/2+1);
psdx = (1/(Fs*N)) * abs(xdft).^2;
psdx(2:end-1) = 2*psdx(2:end-1);
freq = 0:Fs/length(x):Fs/2;
plot(freq,10*log10(psdx))
grid on
Но предположим, для простоты, у меня есть синусоидальный генератор в SIMULINK и мне нужно, чтобы построить PSD. Я сделал что-то вроде следующего:
Затем я получил переменной называется «Sinwave», как я могу возможно применить выше Matlab код для построения PSD?
Обратите внимание, что переменная Sinewave равна 1x1 двойной временной ряд. Я попытался просто заменить x на Sinwave, но это не сработало.
Обновление: Применяя ответы
Я применил то, что рекомендуется вниз, но у меня есть другой выход, чем если бы я сделать это с Matalb. Вот код, который я использовал:
Fs = 1000;
x = Sinwave.Data;
N = length(x);
dft = fft(x);
dft = dft(1:N/2+1);
psd = (1/(Fs*N)) * abs(dft).^2;
psd(2:end-1) = 2*psd(2:end-1);
freq = 0:Fs/length(x):Fs/2;
plot(freq,10*log10(psd))
grid on
Это один для SIMULINK экспортируемых синусоид
Однако один из кода MatLab подобен следующему:
Мне нужна выход будет таким, как это из matalb со всеми этими рябью в шумовом поле. Как я могу получить точный результат?
Обратите внимание, что я использовал точные значения для обоих.
Обновление 2: SIMULINK установки синусоида
1- Синусоида блок
2- В рабочей области блока
3- Solver
Проверьте частоту дискретизации в синусоидальном блоке. Поместите данные на один и тот же рисунок и посмотрите, где они отличаются. Вы можете опубликовать свое обновление как другой вопрос, так как речь идет о данных синусоидальной волны, а не о регистрации в рабочей области. – Navan
1- Я бы сказал, что это одни и те же вопросы. Потому что речь идет о правильном экспорте данных в Matlab. 2- Мне не нужно рисовать на одной фигуре, потому что различия остаются большими и действительно очевидными. Вы только рисуете на одной фигуре, если различия малы. 3- Частота дискретизации и все точно такие же, как упоминалось ранее. – AhmedWas
Я получаю тот же результат, что и Simulink, используя точный код, который у вас есть. Вы установили решатель Simulink на фиксированный временной интервал и правильную частоту дискретизации? – hbaderts