0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
1

Необходимо построить график из данных, считанных из txt

04.08.2017, 16:17. Показов 1944. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Есть текстовый файл (см вложение). В нем - значения сигнала, оцифрованного на частоте 2кГц.
Мне необходимо считать данные из этого файла и построить график.
Задача, вроде, проще некуда. Но, я новичек, видимо где-то упускаю какие-то параметры команд.
Уже перерыл весь форум, перепробовал массу вариантов.
Подскажите, пожалуйста, как это грамотно реализовать?

Делал так:
Matlab M
1
2
3
4
A = dlmread('C:/16/data-2.txt'); %считываем координаты
plot1(A(:,1)) % рисуем линию
xlabel('x')
??? Undefined function or method 'dlmread' for input arguments of type 'char'.
Вложения
Тип файла: txt data-2.txt (19.4 Кб, 10 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.08.2017, 16:17
Ответы с готовыми решениями:

Необходимо построить график
У меня есть массив, сохраненный в текстовом файле, в нем три столбика по 200 строк - это показания...

Необходимо построить график!
Всем гуру доброго времени суток! Задали задачку на экзамене по маткаду, а я в нем "не очень") ...

Необходимо построить график
1)Постройте график функции двумя способами: упрощенным и с использованием ранжированных переменной...

Необходимо построить график
Сабж, график как на фото. Ума не приложу, через какие уравнения/систему уравнений это можно...

12
79 / 61 / 25
Регистрация: 07.04.2013
Сообщений: 204
04.08.2017, 16:29 2
Очень странно, что Matlab у вас ругается на функцию dlmread(), у меня ею читает спокойно. Какая у вас версия матлаба? И прописаны ли пути?
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
04.08.2017, 16:35  [ТС] 3
Annza,
версия 2010b.
Да, путь указан верно: C:/16/data-2.txt
Формат данных не нужно отдельно указывать?
0
79 / 61 / 25
Регистрация: 07.04.2013
Сообщений: 204
04.08.2017, 16:44 4
Нет, уточнять тип не нужно, но видите матлаб вам говорит, что не знает функцию или метод dlmread(), хотя это функция из библиотеки матлаба.

Я имею в виду, прописаны ли у вас в системной переменной Path пути к библиотекам матлаба? Это можно посмотреть Пуск-> Панель управления -> Дополнительно -> Переменные среды. Там в переменной Path у меня например есть C:\Program Files\MATLAB\MATLAB Production Server\R2015a\runtime\win64; C:\Program Files\MATLAB\MATLAB Production Server\R2015a\bin; C:\Program Files\MATLAB\MATLAB Production Server\R2015a\polyspace\bin;
0
Эксперт по математике/физике
6358 / 4065 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
04.08.2017, 16:46 5
Matlab M
1
2
3
A = dlmread('D:\data-2.txt','\t'); %считываем координаты
plot(A) % рисуем линию
xlabel('x')
Рисует.
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
04.08.2017, 16:59  [ТС] 6
jogano,

у меня ерунда какая-то:
Matlab M
1
2
3
4
A = dlmread('C:\16\data-2.txt','\t'); %считываем координаты
plot(A) % рисуем линию
xlabel('x')
??? Undefined function or method 'dlmread' for input arguments of type 'char'.
И, попробовал, вывести тестовый график. Выдает ошибку:
Matlab M
1
2
3
4
5
6
7
8
clc
x=[0 1 2 3 4 5];
y=[0 1 4 9 16 25];
plot(x,y)
grid
 
??? Error using ==> plot
Unable to find the proper "@graph2d" directory.
Добавлено через 8 минут
Annza,
у меня Win7 - не могу найти, как найти где это.
0
79 / 61 / 25
Регистрация: 07.04.2013
Сообщений: 204
04.08.2017, 17:01 7
Пуск-Панель управления-Система и безопасность-Система - Дополнительные параметры системы(это справа в столбце последнее будет) - кнопка Переменные среды
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
05.08.2017, 00:04  [ТС] 8
Annza,
спасибо. Криво установился Матлаб.
Вопрос решился ручным удалением (т.к. не было ярлыков на удаление) и установкой по-новому.
Все заработало в варианте jogano.
Всем отозвавшимся - спасибо!

Добавлено через 4 часа 3 минуты
Возник еще один вопрос.
Хочу сделать преобразование Фурье и построить график спектральной плотности (для этого же массива).
Частота дискретизации - 2 кГц.
Количество точек - 3945.
Делаю:
Matlab M
1
2
3
4
5
6
7
8
clear all% Очистка памяти
A = dlmread('C:\16\data-2.txt','\t'); %считываем координаты
Y = fft(A, 3945);
Pyy = A.*conj(A)/3945;
f = 2000 * (0:1972)/3945;
figure(2), plot(f, Pyy(1:1972)), grid
??? Error using ==> plot
Vectors must be the same lengths.
Что я делаю не так? Как сделать правильно?
0
Эксперт по математике/физике
6358 / 4065 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
05.08.2017, 00:15 9
MaxGal, вектор f у вас имеет индексы от 0 до 1972 (1973 значения), а вектор Pyy - от 1 до 1972 (1972 значения), а должны быть векторы одного размера, как написал Матлаб.
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
05.08.2017, 05:45  [ТС] 10
jogano,
благодарю, с этим я уже разобрался. Данную ошибку не выдает при этом:
Matlab M
1
2
3
4
5
6
clear all% Очистка памяти
A = dlmread('C:\16\data-2.txt','\t'); %считываем координаты
Y = fft(A, 3945);
Pyy = A.*conj(A)/3945;
f = 2000 * (0:1972)/3945;
figure(2), plot(f, Pyy(1:1973)), grid
Но я имел в виду не это.
Я взял за основу это решение: http://matlab.exponenta.ru/ml/... r8/fft.php
На картинке справа у них - график спектральной плотности, а у меня выводится обычный
график сигнала.
Почему? Что не так? Как построить график спектральной плотности для моих данных (прикреплены к моему первому посту)?
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
05.08.2017, 06:18  [ТС] 11
Вот, что получилось у них:
Необходимо построить график из данных, считанных из txt

Вот, что получилось у меня:
Необходимо построить график из данных, считанных из txt

Как правильно построить график спектральной плотности?
0
Эксперт по математике/физике
6358 / 4065 / 1512
Регистрация: 09.10.2009
Сообщений: 7,550
Записей в блоге: 4
05.08.2017, 06:34 12
Лучший ответ Сообщение было отмечено Centurio как решение

Решение

1) ваша строка 4: вы строите частоты спектра от исходных данных (А), а не от преобразованных по FFT, как надо (Y)
2) перепад частот очень большой из-за крайней левой частоты, поэтому остальные частоты не поднимаются выше уровня плинтуса . Предлагаю разметить вертикальную ось в логарифмическом масштабе
Matlab M
1
2
3
4
5
6
7
8
>> clear all% Очистка памяти
>> A = dlmread('D:\data-2.txt','\t'); %считываем координаты
>> Y = fft(A, 3945);
>> Pyy = Y.*conj(Y)/3945;
>> f = 2000 * (0:1972)/3945;
>> figure(2);
>> axes('Parent',figure(2),'YScale','log');
>> semilogy(f,Pyy(1:1973)), grid
Результат:
Миниатюры
Необходимо построить график из данных, считанных из txt  
0
0 / 0 / 0
Регистрация: 24.10.2015
Сообщений: 142
05.08.2017, 07:50  [ТС] 13
jogano,
спасибо, это именно то, что нужно.
0
05.08.2017, 07:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2017, 07:50
Помогаю со студенческими работами здесь

Необходимо построить график зависимости
Доброго времени суток! Необходимо построить график зависимости w(M) Не понимаю почему не...

Необходимо построить трехмерный график
Добрый день! Решаю задачу в матлабе, необходимо построить трехмерный график, но получается...

Построить график по данным из txt файла
Здравствуйте. Есть txt файл с двумя столбцами данных. Задача - построить по этим данным график в...

Необходимо построить график для функции f( x, y) = x+y
Необходимо построить график как на рисунке , для функции f( x, y) = x+y. Возможно есть шаблоны,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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