Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 7

Надо переделать программу из матлаб в С++

07.07.2016, 21:18. Показов 4881. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот моя программа в матлаб(рабочая).Писал сам, но с++ плохо понимаю, поэтому надеюсь на вашу помощь.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear;
hold off;
A1=0.7;
f1=500;
A2=0.5;
f2=1500;
A3=1;
f3=1000;
t=0:0.0001:1;
x1=A1*sin(2*pi*f1*t);
x2=A2*sin(2*pi*f2*t);
x3=A3*sin(2*pi*f3*t);
plot(t,x1+x2+x3);
x4=x1+x2+x3;
y=fft(x4);
plot(abs(y(1:length(y)/2)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.07.2016, 21:18
Ответы с готовыми решениями:

надо переделать программу
помогите переделать на Си или с++ Program posled; uses crt; var i,n,x1,x2,f:integer; Begin clrscr; ...

надо переделать программу
помогите переделать программу нужно было из это программы: #include "stdafx.h" #include <iostream> int _tmain(int...

Надо переделать программу из С на С++
Я не особо шарю в это, помогите пожалуйста, код рабочий все хорошо, надо его просто переделать под С++ Суть программы заключается в том,...

16
 Аватар для Хрисипп
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
07.07.2016, 21:45
0
807 / 534 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
07.07.2016, 21:46
rethaker, скажи, что должна делать программа, и тебе переделают.
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 7
08.07.2016, 23:01  [ТС]
Выводить в файл построенный график прямого преобразования Фурье
0
14 / 16 / 7
Регистрация: 21.05.2016
Сообщений: 48
09.07.2016, 00:26
Теорию быстрого преобразования Фурье знаешь? (только не Высшая математика, а практичная реализация).

Или в итернете найти можешь?
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 7
10.07.2016, 01:22  [ТС]
ura_111, не знаю

Добавлено через 2 минуты
ura_111, я думал, что мне люди на этом сайте помогут полностью написать программу. Или так нельзя?
0
 Аватар для HenryDukart
125 / 125 / 44
Регистрация: 05.10.2013
Сообщений: 462
10.07.2016, 01:53
rethaker, обычно в этом разделе форума помогают с конкретным "затыком" в программе.
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 7
10.07.2016, 01:54  [ТС]
Я просто думал, что помогают на этом сайте, ну, в смысле, могут помочь сделать всю работу. Так-то здесь хорошие ребята, много раз искал на этом сайте ответы на вопросы)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
10.07.2016, 01:54
Цитата Сообщение от rethaker Посмотреть сообщение
я думал, что мне люди на этом сайте помогут полностью написать программу. Или так нельзя?
Либо запасайтесь терпением и ждите альтруиста, обладающего достаточным количеством знаний и свободного времени, либо создавайте тему в разделе "фриланс", но там платить прийдётся. Но правильный путь - пытаться решить самому попутно выкладывая свои попытки - вот тогда действительно есть шанс, что и помогут и подскажут...
1
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 7
10.07.2016, 01:54  [ТС]
HenryDukart, хорошо, спасибо
0
14 / 16 / 7
Регистрация: 21.05.2016
Сообщений: 48
10.07.2016, 02:02
Да, это правда - люди за такую работу деньги берут...

Ну, уважаемый, не расстраивайся. Попробуй поискать на этом же форуме по ключевым словам (просмотри каждую ссылку):




или в Википедии по ссылке:

https://ru.wikibooks.org/wiki/... ье#C.2B.2B

или поищи еще в интернете.

Только будь осторожен - может быть лафа. Проверяй код на контрольных примерах (сопоставляй с Матлабом).
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 7
14.07.2016, 17:02  [ТС]
Вот программа в С++, эх слишком много времени потратил, но понял)
Преобразование Фурье в C++
C++
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
#include <iostream>
#include <complex>
#include <cstdlib>
#include <math.h>
#include <stdio.h>
#include <fstream>
#define MAX 16384
using namespace std;
#define M_PI 3.1415926535897932384
int log2(int N)    {
  int k = N, i = 0;
  while(k) {
    k >>= 1;
    i++; }
  return i - 1;
}
int check(int n)   {
  return n > 0 && (n & (n - 1)) == 0;
}
int reverse(int N, int n{
  int j, p = 0;
  for(j = 1; j <= log2(N); j++) { if(n & (1 << (log2(N) - j)))
      p |= 1 << (j - 1); }
  return p;
}
void ordina(complex<double>* f1, int N) {
  complex<double> f2[MAX];
  for(int i = 0; i < N; i++)
    f2[i] = f1[reverse(N, i)];
  for(int j = 0; j < N; j++)
    f1[j] = f2[j]; }:
void transform(complex<double>* f, int N) {
  ordina(f, N);      complex<double> *W;
  W = (complex<double> *)malloc(N / 2 * sizeof(complex<double>));
  W[1] = polar(1., -2. * M_PI / N);
  W[0] = 1;
  for(int i = 2; i < N / 2; i++)
    W[i] = pow(W[1], i);
  int n = 1;
  int a = N / 2;
  for(int j = 0; j < log2(N); j++) {
    for(int i = 0; i < N; i++) {
      if(!(i & n)) {
        complex<double> temp = f[i];
        complex<double> Temp = W[(i * a) % (n * a)] * f[i + n];
        f[i] = temp + Temp;
        f[i + n] = temp - Temp;
      } }
    n *= 2; a = a / 2;
  }
void FFT(complex<double>* f, int N, double d)
{transform(f, N);
  for(int i = 0; i < N; i++)
    f[i] *= d; //multiplying by step
}
int main()
{ int n;
  do {
   cout << "specify array dimension (MUST be power of 2)" << endl;
    cin >> n;
  } while(!check(n));
  double d;
  cout << "specify sampling step" << endl; //just write 1 in order to have the same results of matlab fft(.)
  cin >> d;
  complex<double> vec[MAX];
  //cout << "specify the array" << endl;
  double A1 = 0.7, f1 = 500;
  double A2 = 0.5, f2 = 1500;
  double A3 = 1, f3 = 1000;
  double t = 0;
  double sign;
  ofstream file1;
  file1.open("data2.txt");
  for(int i = 0; i < n; i++) {
    sign = A1*sin(2*3.14*f1*t) + A2*sin(2*3.14*f2*t) + A3*sin(2*3.14*f3*t);
    real(vec[i]) = sign;
    file1 << sign << ", ";
    //cout << vec[i];
    t = t + 0.1;
  } 
 file1.close();
 
  FFT(vec, n, d);
  cout << "...printing the FFT of the array specified" << endl;
  for(int j = 0; j < n; j++)
    cout << vec[j] << endl;
    ofstream file;
    file.open("data.txt");
      for(int j = 0; j < n; j++)
         {  file << real(vec[j]) << ", ";
         }
  file.close();
  return 0;
}
0
14 / 16 / 7
Регистрация: 21.05.2016
Сообщений: 48
14.07.2016, 22:38
Я пытался скомпилировать твой код (чтобы продолжить работу), но мне выдало ошибки:






rethaker, скажи: "у тебя всё в порядке с кодом?". Может ошибки появились просто при механическом копировании кода.

Покрайней мере вижу одну ошибку в строчке 20 - нужна закрывающая скобка в перечне аргументов функции.

int reverse(int N, int n ) {


rethaker, скажи: "ты на форуме (и в википедии) искал примеры кода?"


rethaker, поверь, лучше говорить как есть.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
14.07.2016, 22:41
rethaker, поищите библиотеки, где реализованы эти функции и воспользуйтесь ими. Так будет значительно проще.
0
14 / 16 / 7
Регистрация: 21.05.2016
Сообщений: 48
14.07.2016, 23:06
Вот ещё ошибки синтаксиса:

1)В строчке 31 после "}" не надо ":".
f1[j] = f2[j]; }:

2) И ещё одна, в строчке 50 нужно ещё одна скобка "}".

------------------------------------------------------------------------------

rethaker, скажи: "ты сверял результаты расчета в С++ и Матлаб (Маткад)?" (совпадают ли?).

------------------------------------------------------------------------------

А и правда, rethaker ты пытался искать просто нужную библиотеку (т.е. потребуется просто подключить эту библиотеку в твой проект и воспользоваться функцией fft(), по аналогии твоего Матлаба). Или, rethaker, тебе нужно именно самому написать на С++, в соответствии с теорией преобразования Фурье, код?

Добавлено через 12 минут
Вот ещё ошибки присвоения в строчке 76:

// real(vec[i]) = sign;

Вообще то это поправимо, но я её пока советую комментировать (двумя //), что бы не мешало работе программы.

Вроде ошибок синтаксиса больше не обнаруживает и программа запускается.

И еще вопрос: rethaker тебе запись/чтение из файл нужно (как в твоём коде)?
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 7
16.07.2016, 23:41  [ТС]
У меня все работало когда я у себя запускал код, возможно при копировании, что-то потерял, либо при редактировании администраторами могло потеряться, ura_111, да, нужно именно самому написать на С++, в соответствии с теорией преобразования Фурье, код. Сверял полученый вектор в матлабе, графики сходились, собственно и нужен для этого вывод в файл.

Добавлено через 3 минуты
ura_111, на вопрос делал ли я сам, нет, делал вместе с другом у которого было точно такое же задание, сами придумывали код. Ну хотя, да, смотрели некоторые источники, как же без этого)
0
14 / 16 / 7
Регистрация: 21.05.2016
Сообщений: 48
17.07.2016, 02:21
Если у тебя результаты сошлось (в С++ и Матлаб), тогда зачем ты вылажил свой код на форум? Это же означает, что твоя - задача решена.

Я не понимаю.

Кстате, я так понимаю что в Матлабе у тебя время (t=0....1) идет с шагом 0,0001, а в С++ вроде шаг времени 0,1 (t=t+0.1.
А ещё мне не понятно, что такое n (оно вводится в самом начале программы). Ведь в Матлабе никакого n нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.07.2016, 02:21
Помогаю со студенческими работами здесь

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

Программу на С++ надо переделать под С
Вот есть программа,которая подсчитывает количество слов. ее нужно переделать используя обычный С,а не С++ #include &lt;iostream&gt; ...

Строки........ надо переделать эту программу
Задание: Написать программу, которая проверяет – можно ли из букв входящих в строку составить строку , причем каждый символ строки можно...

Написал программу на С++, надо переделать на С (пару строк!)
Здравствуйте, пользователи форума! Я начал изучать программирование с языка С++, минуя С. Мне нужно исправить в исходном коде несколько...

очень надо!!доделать/переделать программу с текстовыми файлами(повторы слов)
нужно упорядочить слова находящиеся в тексте по убыванию частоты.При этом различия в регистре не учитывать и делать с текстовыми...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru