2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Матлаб. сдвиг функции
Сообщение17.10.2012, 18:01 


30/07/12
24
Изображение

Картинка корявая,но нужен совет)
Собственно есть функция, есть ее значения в отсчетах в точках 1-N через равные промежутки T. Мы берем каждое второе значение т.е. 1,3,5...N и восстанавливаем четные значения по Котельникову. Т.е. чтобы найти значение в точке 2 нам нужно сложить все значения функций sinc, умноженные на значения самой функции в точках 1,3,5...
Суть такая-берем первый синк, умножаем его на значение х в точке 1, получаем функцию например синк1
потом третий синк-умножаем на значение в х 3 и получаем синк3 и тд до N.
Значение в точке 2=синк1 в точке 2+синк3 в точке 2+синк 5 в точке2 и так до N

по такому циклу не работает никак(
Код:
for k=1:2:N
    xx(k)=sum(H(1:2:N).*x(1:2:N));
    xx(k+1)=sum(H(2:2:N-1));
end;



вот весь текст:
Код:
clear all

F=1;
dt=0.5;
N=200;
H=sinc((-N/2+dt:N/2-1+dt));
w=chebwin(N,100);
H=H.*w';
H(N+1:10*N)=0;
x=sin(2*pi*F*(-N/2:2:N/2-1)/N+pi/17);
for k=1:2:N
    xx(k)=sum(H(1:2:N).*x(1:2:N));
    xx(k+1)=sum(H(2:2:N-1));
end;
plot(xx);


Не могу понять вот что: изначально задаю синк, как потом его сдвинуть например в цикле, но так чтобы были значения в промежуточных точках известны...?

 Профиль  
                  
 
 Re: Матлаб. сдвиг функции
Сообщение17.10.2012, 20:20 


05/09/12
2587
~SIERRA~ в сообщении #632096 писал(а):
по такому циклу не работает никак(
А как оно будет работать, когда у вас в цикле по нечетным k соседним значениям массива присваиваются некие выражения, которые от этого k никак не зависят?

 Профиль  
                  
 
 Re: Матлаб. сдвиг функции
Сообщение18.10.2012, 12:46 
Экс-модератор
Аватара пользователя


23/12/05
12050
Ваши "формулы" понять очень сложно - запишите формулы так, чтобы можно было их понять (используя нотацию $\TeX$), тогда станет, думаю, понятно, как это реализовать в MatLAB



 i  $\operatorname{sinc}x$
Код:
[math]$\operatorname{sinc}x$[/math]

 Профиль  
                  
 
 Re: Матлаб. сдвиг функции
Сообщение18.10.2012, 18:16 


30/07/12
24
немного переделала цикл,но все равно ошибку выдает в цикле самом
Код:
clear all

F=1;
dt=1;
ddt=0.5;
N=200;
H=sinc((-N/2+ddt:dt:N/2-1+ddt));
w=chebwin(N,100);
H=H.*w';
H(N+1:dt:10*N)=0;
H(N/2)=1;
M=200;
x=sin(2*pi*F*(-M/2:2:M/2-1)/M+pi/17);
xx(1:M)=0;
for k=1:2:M
    I(k)=H(N/2-k:N).*x(k);
    xx(k)=xx(k)+I(k);
    xx(k+1)=xx(k+1)+I(k+1);
end;
plot(xx);

 Профиль  
                  
 
 Re: Матлаб. сдвиг функции
Сообщение18.10.2012, 18:34 
Экс-модератор
Аватара пользователя


23/12/05
12050
Цитата:
Код:
for k=1:2:M
    I(k)=H(N/2-k:N).*x(k);


таким образом вы определяете $I$ только для нечетных $k$. Заполняете Вы $I$ в цикле, наращивая его размер, - это плохо, предварительно лучше задать его пустым, скажем, при помощи функции zeros(). Кстати у Вас $I$ - матрица, так как $H(N/2-k:N)$ - массив, так что лучше и обращаться к ней, как к матрице $I(:,k)$ или $I(k,:)$ - как Вам больше нравится, иначе можете получить что-то непредсказуемое.

Цитата:
Код:
   I(k)=H(N/2-k:N).*x(k);
    xx(k)=xx(k)+I(k);
    xx(k+1)=xx(k+1)+I(k+1);


в последней из этих строчек у Вас обращение к $k+1$-ому $I$, которое не существует (а если Вы создадите $I$ до цикла, то будет существовать, но заполенено будет не тем, чем Вам надо), что также не может быть правильно.

 Профиль  
                  
 
 Re: Матлаб. сдвиг функции
Сообщение18.10.2012, 19:02 


30/07/12
24
Код:
for k=1:M
    I(1:M)=0;
    I(1:M)=H(N/2-k:N)*x(k);
    for l=1:2:M
    xx(l)=xx(l)+I(l);
    xx(l+1)=I(l+1);
    end;
end;


переделала так,но на 3 строке опять ошибка, что несоответствие размеров матриц...не понимаю почему..

 Профиль  
                  
 
 Re: Матлаб. сдвиг функции
Сообщение18.10.2012, 19:53 
Экс-модератор
Аватара пользователя


23/12/05
12050
потому что слева у Вас вектор из $M$ элементов, а справа - из $N/2-k:N$.

У Вас какой-то хаос там в кодах. Вы можете привести не матлабовский код, а просто формулы, по которым Вы собираетесь проводить вычисления?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group