Matlab - Как мне построить мои данные? - PullRequest
0 голосов
/ 22 августа 2011

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

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

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

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

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

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

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

Спасибо

1 Ответ

0 голосов
/ 22 августа 2011

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

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
];

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

Split:

[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')
...