3D-график в Octave / Matlab из файла CSV - PullRequest
1 голос
/ 13 января 2012

Я новичок в Octave / Matlab и хочу построить 3D-график.

Я смог сделать это, используя предопределенную формулу, например:

x=1:.1:5;
y=1:.1:5;
[xx,yy] = meshgrid(x,y);
z = sin(xx)+sin(yy);
mesh(x,y,z);

Но теперь вопрос в том, как сделать то же самое, получая данные из CSV (например). Я знаю, что могу использовать функцию csvread, но большой вопрос заключается в том, как отформатировать CSV для хранения таких данных.

Был бы признателен пример выполнения того же графика выше, но на этот раз получения данных из Excel / CSV. Спасибо!

1 Ответ

2 голосов
/ 13 января 2012

Готово! Я наконец смог это сделать!

Вот как я это сделал:

1) Я создал файл в Excel со значениями X в ячейках A2: A42 и значениями Y в ячейках B1: AP1 (поэтому вы формируете прямоугольник).

2) Затем в ячейки посередине я помещаю нужную формулу (т.е. =sin(A$2)+sin($B1))

3) Сохраните файл как CSV (но разделенный пробелами!) И отредактируйте его вручную, чтобы он выглядел таким образом (способ, которым QtOctave открывает файлы матрицы, в Matlab он может отличаться). Например (обратите внимание на дополнительный пробел перед каждым столбцом):

# Created by Octave 3.2.4, Thu Jan 12 19:32:05 2012 ART <diego@notebook2>
# name: z
# type: matrix
# rows: 3
# columns: 3
 1 2 3
 4 5 6
 7 8 9

(если вы не уверены, как это сделать, сделайте то, что я сделал: создайте простую матрицу и экспортируйте ее, чтобы посмотреть, как выглядит экспортированный файл!)

4) Octave имеет функцию под Data -> Load matrix from file, которая загружает файлы такого типа. Или фактически запустив эту команду (varname - имя полученной переменной):

load("-text", "file-where-the-data-is", "varname")

5) Создайте график (ex - это имя матрицы, которую я только что импортировал):

x=1:.1:5;
y=1:.1:5;
mesh(x,y,ex)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...