реклама на сайте
подробности

 
 
> График в MATLAB, как нарисовать?
Stefan1
сообщение Nov 20 2012, 09:50
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Доброго времени суток.
У меня есть зависимость x от у, которая изменяется с течением времени. Как мне построить график зависимости х от у в последний момент времени.

Сообщение отредактировал Stefan1 - Nov 20 2012, 09:56
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
V_G
сообщение Nov 21 2012, 13:43
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Ну, так пишите plot(x[последние моменты],y[последние моменты]),
где последние моменты - диапазон индексов массивов x,y, соответствующих по-вашему последним моментам времени.
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Nov 21 2012, 17:04
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Цитата(V_G @ Nov 21 2012, 17:43) *
Ну, так пишите plot(x[последние моменты],y[последние моменты]),
где последние моменты - диапазон индексов массивов x,y, соответствующих по-вашему последним моментам времени.


Спасибо, заработало!

Сообщение отредактировал Stefan1 - Nov 21 2012, 17:04
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Nov 22 2012, 08:06
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



По ходу решения задачи опять возник вопрос: а можно ли из синусоидальной функции с наличием высших гармоник u в зависимости от времени выделить первую гармонику и построить ее на графике также в зависимости от времени?
Я раскладываю в ряд Фурье функцию и затем выделяю из нее первую гармонику:

uf=fft(u); u1=uf(2)/256*2; uf=[];

Просто uf(2) - не строится. Как мне построить первую гармонику напряжения u в зависимости от времени (отбросив высшие гармоники)?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 22 2012, 08:29
Сообщение #5


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Stefan1 @ Nov 22 2012, 12:06) *
По ходу решения задачи опять возник вопрос: а можно ли из синусоидальной функции с наличием высших гармоник u в зависимости от времени выделить первую гармонику и построить ее на графике также в зависимости от времени?
Я раскладываю в ряд Фурье функцию и затем выделяю из нее первую гармонику:
uf=fft(u); u1=uf(2)/256*2; uf=[];
Просто uf(2) - не строится. Как мне построить первую гармонику напряжения u в зависимости от времени (отбросив высшие гармоники)?


Наверное, вычислить обратное преобразование Фурье - ifft.
Например, так:
Стираем (зануляем) в массиве uf все частоты, кроме нужной вам
u1(1)=0
u1(3:length(u))=0
или в одну строку, если она вас не устрашит sm.gif
u1([1 3:length(u)])=0
написала length(u1), т.к. не знаю точно, сколько у вас частот, вы же можете подставить конкретную константу,
потом
y=ifft(u1);
а дальше строим график обычным образом.
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Nov 22 2012, 09:32
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Цитата(Xenia @ Nov 22 2012, 11:29) *
Наверное, вычислить обратное преобразование Фурье - ifft.
Например, так:
Стираем (зануляем) в массиве uf все частоты, кроме нужной вам
u1(1)=0
u1(3:length(u))=0
или в одну строку, если она вас не устрашит sm.gif
u1([1 3:length(u)])=0
написала length(u1), т.к. не знаю точно, сколько у вас частот, вы же можете подставить конкретную константу,
потом
y=ifft(u1);
а дальше строим график обычным образом.


Все работает, только вот что-то не похоже на 1-ю гармонику (т.е. синусоиду). Может быть из-за того что я не то число ставлю вместо length(u1), т.к. у меня сигнал модулирован низкой частотой и первая гармоника здесь соответствует модулирующиму сигналу, а не несущей. Как бы теперь выделить первую гармонику несущей - наверно в ручную подбирать? т.к. частот модулирующего сигнала я не знаю.

Сообщение отредактировал Stefan1 - Nov 22 2012, 10:42
Go to the top of the page
 
+Quote Post
Xenia
сообщение Nov 22 2012, 12:50
Сообщение #7


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Stefan1 @ Nov 22 2012, 13:32) *
Все работает, только вот что-то не похоже на 1-ю гармонику (т.е. синусоиду). Может быть из-за того что я не то число ставлю вместо length(u1), т.к. у меня сигнал модулирован низкой частотой и первая гармоника здесь соответствует модулирующиму сигналу, а не несущей. Как бы теперь выделить первую гармонику несущей - наверно в ручную подбирать? т.к. частот модулирующего сигнала я не знаю.


Возьмем 8-точеный пример:

1) Загоним туда косинусоиду (удобна тем, что ее спектр действителен):
Код
x = [0:7]          // команда
x =
     0     1     2     3     4     5     6     7     // отклик МатЛаба

y = cos(2*pi/8*x)          // команда
y =
    1.0000    0.7071    0.0000   -0.7071   -1.0000   -0.7071   -0.0000    0.7071     // отклик МатЛаба

2) Делаем fft
Код
u=fft(y)          // команда
u =
  -0.0000     4.0000    0.0000   -0.0000    0.0000   -0.0000    0.0000    4.0000     // отклик МатЛаба
u'          // команда напечатать в столбик
  -0.0000  // u(1) постоянная составляющая      
   4.0000  // u(2) амплитуда первой гармоники (самой медленной)
   0.0000  // u(3) амплитуда второй гармоники          
  -0.0000  // u(4) амплитуда третей гармоники
   0.0000  // u(5) амплитуда четвертой гармоники, частота Найквиста (самая быстрая)          
  -0.0000  // u(6) зеркальное комплексносопряженное от u(4)
   0.0000  // u(7) зеркальное комплексносопряженное от u(3)          
   4.0000  // u(8) зеркальное комплексносопряженное от u(2)

Ось симметрии проходит через частоту Найквиста.
Постоянная составляющая своего отражения не имеет.
"Комплексносопряженное" означает, что действительная часть числа сохраняется, а мнимое изменяет свой знак.

3) Обнуляем ненужные гармоники
Кроме u(2) надо оставить незануленной еще и ее отражение u(8).
Когда в массиве не 8 элементов, а больше, то надо рассчитать номер зеркального отражения.
Для первой гармоники он самый последний в ряду:
Код
u([1 3:length(u)-1])=0
u =
    0     4.0000      0        0        0        0        0          4.0000


4) Делаем обратное преобразование Фурье
Код
y2=ifft(u)
y2 =
    1.0000    0.7071    0.0000   -0.7071   -1.0000   -0.7071   -0.0000       0.7071

Готово! Поскольку у нас изначально была только 1-ая гармоника, то она и осталась.
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Nov 22 2012, 17:47
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Цитата(Xenia @ Nov 22 2012, 16:50) *
Когда в массиве не 8 элементов, а больше, то надо рассчитать номер зеркального отражения.

Спасибо за пояснения! Только вот у меня этих элементов - несколько тысяч, как это зеркальное отражение рассчитать то?
И еще один вопрос: если мой сигнал модулирован низкой частотой, то 1-я гармоника будет именно этого модулирующего сигнала, может есть способы его убрать?

Сообщение отредактировал Stefan1 - Nov 22 2012, 18:07
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Stefan1   График в MATLAB   Nov 20 2012, 09:50
- - deeper_79   Цитата(Stefan1 @ Nov 20 2012, 12:50) Добр...   Nov 20 2012, 13:33
|- - Stefan1   Цитата(deeper_79 @ Nov 20 2012, 16:33) t=...   Nov 21 2012, 09:45
- - V_G   Не понял, вам 3-мерный график нужен? Есть функции ...   Nov 21 2012, 12:43
|- - Stefan1   Цитата(V_G @ Nov 21 2012, 15:43) Не понял...   Nov 21 2012, 13:20
- - Xenia   Цитата(Stefan1 @ Nov 22 2012, 21:47) У ме...   Nov 22 2012, 18:23
- - Stefan1   Цитата(Xenia @ Nov 22 2012, 22:23) Про мо...   Nov 22 2012, 18:43
- - Xenia   Цитата(Stefan1 @ Nov 22 2012, 22:43) Да, ...   Nov 22 2012, 18:47
- - Stefan1   Столкнулся опять с проблемой: матлаб почему-то не ...   Jan 30 2013, 08:09
- - mdmitry   Цитата(Stefan1 @ Jan 30 2013, 11:09) Стол...   Jan 30 2013, 08:14
- - Stefan1   Цитата(mdmitry @ Jan 30 2013, 11:14) А X(...   Jan 30 2013, 08:49


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 12:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016