Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 1
Регистрация: 12.09.2015
Сообщений: 303
1

Сформировать в Matlab сигнал

16.09.2015, 17:36. Просмотров 2861. Ответов 13
Метки нет (Все метки)

Скажите,как можно с помощью программирования сформировать косинус который идет 0 до 1 мкс, а потом ноль,а потом с 2 мкс до 3 опять идет косинус? Никак не могу понять как это записать в матлабе, какие условия нужно записать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2015, 17:36
Ответы с готовыми решениями:

Подскажите пожалуйста. Как сформировать сигнал в matlab
Начал изучать matlab и возникли трудности. Необходимо создать математическую модель и отобразить...

Подскажите как в Matlab пропустить через рассчитанный фильтр такой сигнал: 101011001101001?
пишу диплом. сам фильтр(цифровой фнч) удалось рассчитать. пропустить синусоиду для проверки...

MatLab: сложить графики, один из которых составлен через цикл. цифровой сигнал складываем с аналоговым
Здравствуйте! у меня есть задание по тэц - есть сигнал и к нему нужно просто прибавить помеху. Это...

Сформировать трапециевидный периодический сигнал
Здравствуйте! Нужна ваша помощь. Есть кусок кода. Нужно, чтобы вместо прямоугольных импульсов были...

13
Модератор
1015 / 951 / 260
Регистрация: 13.09.2015
Сообщений: 3,406
16.09.2015, 18:15 2
Сформулируйте, пожалуйста, задачу более чётко. От 0 до 1 мкс и далее идёт косинус или аргумент, от которого берётся косинус? Нужно ли указывать аргумент между 1 и 2 мкс?
0
0 / 0 / 1
Регистрация: 12.09.2015
Сообщений: 303
16.09.2015, 18:27  [ТС] 3
Мне нужно сделать так, чтобы косинус шел от нуля до 1 мкс, дальше до 2 мкс "ноль" (пустота косинус не распространяется), дальше от 2 мкс до 3 мкс опять косинус т.е. получаются радиоимпульсы.
0
Модератор
1015 / 951 / 260
Регистрация: 13.09.2015
Сообщений: 3,406
16.09.2015, 18:34 4
То есть от 1 до 2 и далее идёт именно косинус, а не аргумент, от которого он берётся? Тогда лучше напишите формулу, по которой идёт расчёт, потому что странно, что косинус имеет размерность микросекунд.
0
0 / 0 / 1
Регистрация: 12.09.2015
Сообщений: 303
16.09.2015, 18:38  [ТС] 5
ну пусть будет 1 секунда, а не мкс. u=cos(t)
Вот такое мне нужно, что и на картинке

Никто не поможет?
0
Миниатюры
Сформировать в Matlab сигнал  
Модератор
1015 / 951 / 260
Регистрация: 13.09.2015
Сообщений: 3,406
16.09.2015, 19:40 6
Теперь понятно. Всё-таки диапазон для аргумента задаётся, не для косинуса. Причём аргумент должен быть в угловой мере. Для наглядности возьмём частоту сигнала в 10 МГц
Например, можно сделать так:
>> x=[0:0.05:3];a=find(x>=1&x<=2);
>> y=cos(x*2*pi*10);
>> y(a)=0;
Можно далее построить график:
>> plot(x,y)
0
5082 / 3730 / 1442
Регистрация: 02.02.2014
Сообщений: 10,007
16.09.2015, 19:56 7
версия подлиньше... на любое количество секунд
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
clear all; clc;clf; 
 x=0:0.001:1;
for d=0:5
 if (rem(d,2)==0) 
     y=cos(20*x); 
 else
     y=zeros(1,length(x));
 end
 
 if (d==0) 
     Y=y;
     X=x;
 else
     X=[X x+d];
     Y=[Y y];      
 end;
 
 disp([length(X),length(Y)]);
end
 
plot(X,Y);
grid on;
1
0 / 0 / 1
Регистрация: 12.09.2015
Сообщений: 303
16.09.2015, 22:52  [ТС] 8
Спасибо всем большое за помощь, я как программист никакой. Все что смог сделать, так это косинус умножить на последовательность прямоугольных импульсов, но это моего знакомого не устроило, говорит нужно сделать с учетом программирования, так как, то, что я сделал необходимо больше вычислений

Добавлено через 20 минут
Centurio, а можно сделать так, если я буду рассматривать не 2 импульса, а скажем 10, что нужно в этой программе изменить, чтобы нуль был не только в интервале 1 до 2, но и 3 по 4 и т.д

Добавлено через 2 часа 29 минут
Скажите, а так можно записать, чтобы можно было сформировать несколько импульсов?
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
N=1;
tau=1;
T=10;
T_pach=N*T;
t=0:0.001:T_pach;
for n=0:1:N
a=find((t>=tau+n*T)&t<=n*T);
u=cos(2*pi*10*t);
u(a)=0;
end
plot(t,u),grid
xlim([0,T_pach])
ylim([-2,2])
0
Модератор
1015 / 951 / 260
Регистрация: 13.09.2015
Сообщений: 3,406
16.09.2015, 23:09 9
Будем обозначать период сигнала - Т, продолжительность сигнала - tau, частоту - f, количество периодов - n.
Matlab M
1
2
3
4
5
6
7
8
9
10
T=2e-6;tau=1e-6;f=5e6;
n=10;
w=2*pi*f;
x=linspace(0,T*w*n,n*1000);
y=cos(x);
for i=1:n
a=find(x>=(T*(i-1)+tau)*w&x<=T*i*w);
y(a)=0;
end
plot(x,y),axis([0 inf -2 2]),grid on
Почти одинаково получилось. Только я вывел вычисление косинусов за тело цикла (осталась привычка так делать со времён медленных компьютеров).
0
0 / 0 / 1
Регистрация: 12.09.2015
Сообщений: 303
16.09.2015, 23:10  [ТС] 10
все спс, все понял!
0
Модератор
1015 / 951 / 260
Регистрация: 13.09.2015
Сообщений: 3,406
16.09.2015, 23:13 11
В 7 строчке в первом сравнении нужно написать tau+(n-1)*T
0
0 / 0 / 1
Регистрация: 12.09.2015
Сообщений: 303
17.09.2015, 02:40  [ТС] 12
Centurio, А если есть задержка скажем, 1 секунда, что нужно тогда изменить в программе?

Добавлено через 1 час 19 минут
Если задержка будет менятся, что нужно изменить?
0
Модератор
1015 / 951 / 260
Регистрация: 13.09.2015
Сообщений: 3,406
17.09.2015, 10:07 13
Задержка в 1 секунду - это чересчур. Наверное, всё-таки 1 микросекунда.
Введём дополнительный параметр - время задержки tz
Matlab M
1
2
3
4
5
6
7
8
9
10
T=2e-6;tau=1e-6;tz=0.5e-6;f=5e6;
n=10;
w=2*pi*f;
x=0;y=0;
for i=0:n-1
a=(linspace(0,tau,1000)+tz+T*i)*w;
b=cos(a);b(1)=0;b(end)=0;
x=[x a];y=[y b];
end
plot(x,y),axis([0 inf -2 2]),grid on
Я немного изменил программу, чтобы не производились лишние расчёты на интервалах, где функция равна 0. Но если нужно в дальнейших расчётах использовать векторы с равноотстоящими значениями, то эта программа может не подойти.
Задержку времени я взял 0,5 мкс.
0
0 / 0 / 1
Регистрация: 12.09.2015
Сообщений: 303
06.11.2015, 02:08  [ТС] 14
Ребят у меня такая проблем имеется сигнал, его задержка 300 мкс период повторения 10 мкс, длительность импульса 1 мкс. Всего отсчетов этом сигнале 120540, необходимо сформировать последовательность импульсов с длительностью 0.5 мкс да так, чтобы это последовательность имульсов легла на сигнал с учетом задержки, помогите кто-нибудь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2015, 02:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сформировать синусоидальный сигнал заданной частоты
Доброго времени суток, господа! Помогите, пожалуйста. В связи с написанием курсовой работы пришлось...

Как сформировать такой сигнал в матлаб подскажите пожалуйста
только начал изучать матлаб, поэтому возникают трудности

Нужно сформировать матрицу из двух строк в matlab
Первая строка от 1 до 100 и кратная 5, в порядке возрастания Вторя строка от 1 до 100 кратные 5, в...

Сформировать квадратную матрицу порядка n. Перевод Pascal-Matlab
Здравствуйте. Задание следующее: Сформировать квадратную матрицу порядка n по заданному образцу....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.