Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
1

Фурье. Загрузить файл с данными

07.04.2015, 20:50. Показов 1345. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не получается доделать программу, которая строит преобразование Фурье.
Сначала выполнила в MatCad, сохранился файл "X.dat".
В MatLab не получается загрузить этот файл и продолжить строить остальное.
Кто поможет?
Код
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
%%
function Lab_Matlab(  )
 
%var
  b=0;
  a=0;
  fi=0;
  tn=0;
 fn=0;
  fd=0;
  td=0;
 sum_ampl=0;
 sum_cos=0;
  sum_sin=0;
sum_cos_fi=0;
 sum_sin_fi=0;
 i=0;
j=0;
n=0;
  ampl=0;
 f=0;
  x=0;
  y=0;
  delta=0;
  z=0;
  sum_x=0;
  Specl=0;
 
b(1)=0.000881847553;
b(2)=-0.00000187613842;
b(3)=0.0127260558;
b(4)=0.00000117333529;
b(5)=-0.0385919636;
b(6)=-0.000000794669754;
b(7)=0.0217106507;
b(8)=-0.000000460638630;
b(9)=0.0994375191;
b(10)=-0.000000126607506;
b(11)=-0.279463243;
b(12)=-0.000000218474142;
b(13)=0.368401231;
b(14)=0.368401231;
b(15)=-0.000000218474142;
b(16)=-0.279463243;
b(17)=-0.000000126607506;
b(18)=0.0994375191;
b(19)=-0.000000460638630;
b(20)=0.0217106507;
b(21)=-0.000000794669754;
b(22)=-0.0385919636;
b(23)=0.00000117333529;
b(24)=0.0127260558;
b(25)=-0.00000187613842;
b(26)=0.000881847553;
fn=0.005;
 
% АЧХ разрабатываемого КИХ-фильтра
i=1;
while i<99 
    sum_cos=0.0;
    sum_sin=0.0;
    j=1;
       while j<26
          sum_cos=sum_cos+b(j)*cos(2*3.14159265358979*fn*j);
          sum_sin=sum_sin+b(j)*sin(2*3.14159265358979*fn*j);
          j=j+1;
        end;
a(i)=sqrt((sum_cos * sum_cos)+(sum_sin * sum_sin));
fn= fn + 0.005;
i=i+1;
end;
str='АЧХ разрабатываемого КИХ-фильтра';
plot(a,'r');
i=1;
 
% ФЧХ разрабатываемого КИХ-фильтра  
fn=0.005;
while i<100 
    sum_cos_fi=0.0;
    sum_sin_fi=0.0;
    j=1;
    while j<26  
        sum_sin_fi=sum_sin_fi+b(j)*sin(2*3.14159265358979*fn*j);
        sum_cos_fi=sum_cos_fi+b(j)*cos(2*3.14159265358979*fn*j);
        j=j+1;
    end;
fi(i)=atan(sum_sin_fi/sum_cos_fi);
fn_list(i)=fn;
fn= fn + 0.005;
i=i+1;
end;
 
figure(2); 
plot(fn_list, fi,'r');
title('ФЧХ разрабатываемого КИХ-фильтра');
 
n=1;
ampl(1)=9;
ampl(2)=11;
ampl(3)=15;
ampl(4)=17;
ampl(5)=21;
ampl(6)=29;
ampl(7)=35;
 
f(1)=21000;
f(2)=25000;
f(3)=32000;
f(4)=33000;
f(5)=41000;
f(6)=45000;
f(7)=50000;
i=1;
fd=2*f(7);
td=1.0/fd;
while n<1024 
    tn(n)=td*n;
    n=n+1;
end;
n=1;
 
% Исходный сигнал 
while n<1024 
    sum_ampl=0.0;
    i=1;
    while i<7
        sum_ampl=sum_ampl+ampl(i)*sin(2*3.14159265358979*f(i)*tn(n));
        i=i+1;
    end;
x(n)=sum_ampl;
n=n+1;
end;
 
figure(3); 
plot(x(1:250),'r');
title('Исходный сигнал');
hold on;
 
% Исходный сигнал с использованием фильтра
z=1;
n=1;
while n<1024 
    sum_x=0.0;
    j=1;
    while j<26
        if j>n 
            z= 1;
        else z= n - j+1;
        end;
        sum_x= sum_x + b(j) * x(z);
        j= j + 1;
    end;
y(n)= sum_x;
n= n + 1;
end;
 
%figure(4);
plot(y(1:240),'b');
title('Исходный сигнал с использованием фильтра');
hold off;
 
% Шумы
n=1;
 
while n<1024 
    delta(n)=x(n)-y(n);
    n=n+1;
end;
figure(5);    
plot(delta(1:250),'r');
title('Шумы');
 
load('X.dat');
Specl=FfT(X);
plot(Specl(1:600),'r');
end
Миниатюры
Фурье. Загрузить файл с данными   Фурье. Загрузить файл с данными  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2015, 20:50
Ответы с готовыми решениями:

Как получить спектр, имея текстовый файл с данными отсчетов оцифрованной акселерограммы при помощи преобразования Фурье
Доброго времени суток! Дорогие друзья подскажите пожалуйста, как мне получить спектр имея текстовый...

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

загрузить массив с данными в базу, и если есть строки, которых нет в Массиве, то их удалить
Загружаю товар из Excel, превращаю его в массив и загружаю в БД, не знаю как сделать чтобы при...

Файл: Загрузить файл в представлении через jQuery
Помогите, пожалуйста. Проблема такая, пытаюсь загрузить файл в представлении через jQuery: ...

16
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
07.04.2015, 21:21 2
X.dat дадите?)
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
07.04.2015, 21:23  [ТС] 3
Тут 2 файла : X.dat и файл MatCad
Вложения
Тип файла: rar лаба1_1_2.rar (438.0 Кб, 9 просмотров)
0
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
07.04.2015, 21:59 4
PEkaterina, сходу, считывает нормально, в 174 строке FfT(X) на fft(X) и матлаб построит Specl, но вид странный
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
07.04.2015, 22:08  [ТС] 5
странно, но у меня ошибку выдает, не строит Specl

Добавлено через 1 минуту
да, вид весьма не такой, как в Matcade

Добавлено через 2 минуты
а это может зависеть от того, что файл X.dat хранит в таком виде:
-57.62
21.94
-21.24
а не в таком:
-57,62
21,94
-21,24
0
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
07.04.2015, 22:26 6
PEkaterina, как раз в таком виде он и должен быть
-57.62
21.94
-21.24

по идее должно быть так, но все равно не то
Matlab M
1
2
3
Specl=X-fft(X)
plot(1:length(X),Specl,'r');
axis([0 length(X) -1 1])
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
07.04.2015, 22:29  [ТС] 7
oblomov, не совсем пойму вопроса.. все предыдущие графики вывелись правильно с y(n)
0
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
07.04.2015, 22:36 8
Лучший ответ Сообщение было отмечено PEkaterina как решение

Решение

PEkaterina, похоже?
Matlab M
1
2
3
4
5
load('X.dat');
NFFT = 2^nextpow2(length(X));
Specl=X-fft(X,NFFT)/length(X);
plot(1:length(X),Specl,'r');
axis([0 length(X) -1 1])
Добавлено через 2 минуты
если сделать -100 100 пределы по y по виду бьется, вроде как
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
07.04.2015, 22:40  [ТС] 9
oblomov, похоже на самый последний график
0
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
07.04.2015, 22:41 10
PEkaterina, ну как я понял вам и нужен он??)
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
07.04.2015, 22:53  [ТС] 11
oblomov, да) спасибо большое.
А нельзя вывести хотя бы парочку тех, что перед выводом этого графика?

Добавлено через 8 минут
oblomov, а через быстрое преобразование Фурье можно?
0
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
07.04.2015, 22:55 12
PEkaterina, что именно? здесь же оно и реализовано fft(X,NFFT)/length(X) и так же взята разница как в маткаде
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
07.04.2015, 23:01  [ТС] 13
oblomov, ясно) спасибо за помощь)
0
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
13.04.2015, 15:57  [ТС] 14
oblomov, а поможете вывести первый график на картинке?
0
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
14.04.2015, 22:35 15
Лучший ответ Сообщение было отмечено PEkaterina как решение

Решение

PEkaterina,
вместо прошлого
Matlab M
1
2
3
4
5
load('X.dat');
NFFT = 2^nextpow2(length(X));
Specl=abs(fft(X,NFFT)/length(X));
plot(1:length(X),Specl,'r');
axis([0 length(X)/2 0 15])
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 12
14.04.2015, 22:42  [ТС] 16
спасибо большое) я уже доделала, что нужно было еще.
0
142 / 142 / 37
Регистрация: 14.12.2013
Сообщений: 221
14.04.2015, 22:51 17
PEkaterina,
2
14.04.2015, 22:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2015, 22:51
Помогаю со студенческими работами здесь

Создать wav файл имея raw файл с данными
Всем хорошего настроения! Пишу программу для обработки аudio данных, и есть необходимость...

Создать текстовый файл с исходными данными любой размерности. Из текстового файла переписать числа в массив, типизированный файл. Сделать контрольный
Создать текстовый файл с исходными данными любой размерности. Из текстового файла переписать числа...

Невозможно загрузить файл или сборку или один из зависимых от них компонентов. Не удается найти указанный файл
Прошу помощи знающих людей. Есть программа специализированная Mantis Lvision, к ней можно...

Разложить функцию в ряд Фурье и построить график суммы ряда Фурье
Здравствуйте. Дана задача: На интервале (-π;π) задана периодическая (с периодом 2π) функция...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru