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

 
 
> Цикл for и формирование отсчетов sin
Acvarif
сообщение Mar 16 2016, 09:09
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Столкнулся с непоняткой в использовании цикла for
Имеется тестовый код
Код
% исходная частота сигнала
f = 90000;
% период частоты
T = 1/f;
% частота выборок 360 кГц
fs  = 360000;
% начало модели
tmin = 0;
% конец модели
tmax = 5*T;
% шаг моделирования
dt = T/4;
% цикл моделирования
t = tmin:dt:tmax;
xc = cos(2*pi*f*t);
pl = conv(xc, 4);
figure
plot(t,xc,'r');
hold on
stem(t,xc);
который работает верно и дает правильные отсчеты sin
Но если для формирования отсчетов использовать for
Код
for t = tmin:dt:tmax;
  xc = cos(2*pi*f*t);
end
то все отсчеты равны 1
Подскажите пожалуйста как правильно формировать отсчеты через for, поскольку есть необходимость применять for.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MiPe
сообщение Mar 16 2016, 09:18
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 17-08-11
Пользователь №: 66 760



В первом случае xc является массивом, а во втором случае - скаляром (в цикле xc постоянно перезаписывается). Соответствующие результаты на графике plot.
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Mar 16 2016, 09:22
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Цитата(MiPe @ Mar 16 2016, 12:18) *
В первом случае xc является массивом, а во втором случае - скаляром (в цикле xc постоянно перезаписывается). Соответствующие результаты на графике plot.

Спасибо. Понятно. Но если сделать так
Код
xc=zeros(1,20);
n = 0;
for t = tmin:dt:tmax;
  n = n + 1;
  xc(n) = cos(2*pi*f*t);
end
то получается все то же самое. Как правильно записать отсчеты сигнала в массив с помощью for?
Go to the top of the page
 
+Quote Post
Realking
сообщение Mar 16 2016, 09:58
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



Цитата(Acvarif @ Mar 16 2016, 12:22) *
Спасибо. Понятно. Но если сделать так
Код
xc=zeros(1,20);
n = 0;
for t = tmin:dt:tmax;
  n = n + 1;
  xc(n) = cos(2*pi*f*t);
end
то получается все то же самое. Как правильно записать отсчеты сигнала в массив с помощью for?


потому что ты после делаешь
plot(t,xc,'r');
а t после цикла - скаляр (равна tmax)

и да еще, не понятно зачем ты вообще хочешь юзать for


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Mar 16 2016, 10:43
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Цитата(Realking @ Mar 16 2016, 12:58) *
потому что ты после делаешь
plot(t,xc,'r');
а t после цикла - скаляр (равна tmax)

и да еще, не понятно зачем ты вообще хочешь юзать for

Первое что пришло в голову для создания матрицы сигнала.
Очевидно можно и linspace..

Сообщение отредактировал Acvarif - Mar 16 2016, 10:49
Go to the top of the page
 
+Quote Post



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

 


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


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