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

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

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

Author24 — интернет-сервис помощи студентам
Вот моя программа в матлаб(рабочая).Писал сам, но с++ плохо понимаю, поэтому надеюсь на вашу помощь.
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...

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

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

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

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

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

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

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

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



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

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

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

Только будь осторожен - может быть лафа. Проверяй код на контрольных примерах (сопоставляй с Матлабом).
0
0 / 0 / 0
Регистрация: 07.07.2016
Сообщений: 7
14.07.2016, 17:02  [ТС] 12
Вот программа в С++, эх слишком много времени потратил, но понял)
Преобразование Фурье в 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 13
Я пытался скомпилировать твой код (чтобы продолжить работу), но мне выдало ошибки:


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




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

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

int reverse(int N, int n ) {


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


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

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  [ТС] 16
У меня все работало когда я у себя запускал код, возможно при копировании, что-то потерял, либо при редактировании администраторами могло потеряться, ura_111, да, нужно именно самому написать на С++, в соответствии с теорией преобразования Фурье, код. Сверял полученый вектор в матлабе, графики сходились, собственно и нужен для этого вывод в файл.

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

Я не понимаю.

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru