Matlab - Как мне построить свои данные?

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

Структура файла следующая:

  • Номера столбцов файла представляют собой оси X.
  • Значения в каждой строке представляют оси Y
  • а номер строки представляет оси Z

Однако каждая вторая строка в файле представляет точки данных предыдущей строки, +1 стандартное отклонение.

Кроме того, каждая пара строк длиннее предыдущей.

Итак, что я хотел бы, это две поверхности на каждом участке. Первая поверхность представлена ​​каждой линией с нечетным номером, а вторая - каждой линией с четным номером.

Как мне это сделать?

Спасибо


person Griffin    schedule 22.08.2011    source источник


Ответы (1)


Я знаю, что у вас не может быть неквадратной матрицы в Matlab. Поэтому самое близкое, что вы можете сделать, это поместить NaN в отсутствующие пробелы:

A = [
    10 10 NaN NaN NaN
     2  2 NaN NaN NaN
    20 20 20 NaN NaN
     3  3  3 NaN NaN
    30 30 30 30 30
     4  4  4  4  4
];

Все остальное то же самое.

Расколоть:

[rows, cols] = size(A);
A_mean = A(1:2:rows, :);
A_sd   = A(2:2:rows, :);

Сделайте топоры (я переставил их так, как у вас ;)

[XX, ZZ] = meshgrid(1:cols, 1:(rows/2))

И сюжет:

surf(XX, A_mean, ZZ); hold('on');
surf(XX, A_sd, ZZ); hold('off')
person Owen    schedule 22.08.2011
comment
Спасибо за ваш ответ, извините, я пропустил важную часть информации из своего вопроса, который я сейчас добавил: каждая пара строк длиннее предыдущей пары. Также не могли бы вы сказать мне, каков порядок ваших x, y, z, чтобы я мог понять, что нужно изменить, чтобы все было так, как я хочу? Спасибо. - person Griffin; 22.08.2011
comment
Если это невозможно без заполнения концов строк нулями, я не возражаю, но мне также потребуются некоторые рекомендации, как это сделать - еще раз спасибо за ваше время. - person Griffin; 22.08.2011
comment
@Griffin Я не помню, что произойдет, если вы прочитаете неквадратный CSV - я думаю, что там, где нет ячеек, будут стоять 0. Хотя может ошибся. - person Owen; 22.08.2011
comment
@ Оуэн, вы можете читать CSV-файлы с m столбцами и n строками, когда m не равно n. Это не проблема. - person ephsmith; 22.08.2011
comment
@ephsmith Извините, я имел в виду непрямоугольный;) - person Owen; 22.08.2011
comment
@ Оуэн, мне пришлось преобразовать мои файлы данных с помощью C, чтобы получить прямоугольные файлы CSV. Мне пришлось поменять местами оси, но теперь все в порядке. Спасибо. - person Griffin; 22.08.2011