Функция Matlab 3dplot для построения величины синусоиды с переменной частотой и временем - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь создать трехмерный график, чтобы показать амплитуду добавления 3 синусоид различной фазы.Три оси были бы: время, частота и величина.Я просто не уверен, как я могу преобразовать то, что у меня есть, во что-то, что функция 3dplot может использовать.Новое в этом, спасибо!

clear;
clc;

inc = 100;
i = 1;
i2 = 1;
for t = 0:(2.413E-9)/inc:2.413E-9 %time range to view signals
for f = 56E9:(64E9-56E9)/inc:64E9 %frequencies from 56ghz - 64ghz

w = 2*pi*f;

wave1 = 0.5*sin(w.*t + (0.25*2));%sinusoids of varying distances, arbitrary amplitude
wave2 = 0.5*sin(w.*t);
wave3 = 0.5*sin(w.*t - (0.25*2));
mag = wave1 + wave2 + wave3;%combining waves

combined(i,i2,i) = mag;
    %f,time,magnitude

i = i + 1;%changing frequency index    
end
i = 1;
i2 = i2 + 1;%changing time index
end

РЕДАКТИРОВАТЬ: Спасибо всем, я думаю, у меня есть то, что я искал.

1 Ответ

0 голосов
/ 01 июня 2018

Вот несколько предложений:

  • Возможно, вы захотите заменить combined(i,i2,i) = mag; на combined(i,i2) = mag;.Это создаст combined в виде матрицы (двумерный массив), дающей величину как функцию времени и частоты
  • Чтобы построить это, используйте что-то вроде surf или imagesc.
  • Код может быть векторизован.Это делает его более компактным, возможно, более читабельным и более быстрым.
  • Эта цифра значительно меняется при изменении inc.Это может быть признаком того, что текущий inc вызывает псевдоним в представлении.Возможно, вы захотите увеличить этот параметр.
  • Вы можете захотеть избегать , используя i в качестве имени переменной.

Код:

clear;
clc;
inc = 100;
t = 0:(2.413E-9)/inc:2.413E-9; %time range to view signals
f = 56E9:(64E9-56E9)/inc:64E9 %frequencies from 56ghz - 64ghz
w = 2*pi*f;
wave1 = 0.5*sin(bsxfun(@times, w.', t) + (0.25*2));%sinusoidsdistances
wave2 = 0.5*sin(bsxfun(@times, w.', t));
wave3 = 0.5*sin(bsxfun(@times, w.', t) - (0.25*2));
combined = wave1 + wave2 + wave3;%combining waves
%f,time,magnitude
surf(t, f, combined, 'edgecolor', 'none')
xlabel time
ylabel frequency

enter image description here

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