2017-01-19 10 views
0

Я чрезвычайно новичок в OCTAVE. По достоинству оценил бы любую помощь.Как импортировать грубую 2D-поверхность из файла CSV, интерполировать и экспортировать очищенный CSV-файл OCTAVE

У меня есть файл CSV с 2-мерным массивом точек z-значения. Точки равномерно распределены вдоль осей X и Y и соответствуют строке/столбцу, в котором хранится z-значение. (Т.е. первый столбец, первая строка, z = 4 соответствует --- >> (0,0,4))

ВОПРОС:

Как я могу импортировать CSV файл Z-значений и использовать его в качестве моих точек на 2-D сетке? Затем, как я могу интерполировать эти значения на более тонкой 2-D сетке, а затем экспортировать уточненный двухмерный массив?

Моя сетка представляет собой квадрат с X & Y от 0 до 9 с шагом 1, я хочу сделать шаг 0.1 (100 точек данных до 10000 точек данных).

Я знаю, что это просто вопрос использования griddata, meshgrid, linspace или interp2 ... но я не знаю, как это сделать.

ПОЖАЛУЙСТА кто может вам помочь мне

+0

Если я полагаю, что Octave имеет аналогичную обработку файлов ascii, я могу написать вам следующие шаги: - Открыть файл, используя «fid = fopen ('yourfilepath', 'r'); - Прочитайте файл по строкам (самый медленный, но безопасный), используя «line = fgetl (fid)»; - Проведите каждую строку до массива - закрыть файл, используя «fclose (fid)» - сделайте свою интерполяцию (так как я вижу, что Octave имеет также «interp2») - экспортируйте ваши интерполированные данные (https: // www. gnu.org/software/octave/doc/v4.2.0/Simple-File-I_002fO.html) – Lati

ответ

0

Я создал файл derek.csv:

8 4 9 
4 5 6 
8 9 3 
5 3 4 

Теперь вы можете загрузить его с GNU Octave с dlmread, создать новую сетку (пример с 0,5 расстояние) и вызов interp2:

Z = dlmread ("derek.csv", " "); 
[XX, YY] = meshgrid (1:0.5:columns(Z), 1:0.5:rows(Z)); 
newZ = interp2 (Z, XX, YY) 

который дает

8.0000 6.0000 4.0000 6.5000 9.0000 
6.0000 5.2500 4.5000 6.0000 7.5000 
4.0000 4.5000 5.0000 5.5000 6.0000 
6.0000 6.5000 7.0000 5.7500 4.5000 
8.0000 8.5000 9.0000 6.0000 3.0000 
6.5000 6.2500 6.0000 4.7500 3.5000 
5.0000 4.0000 3.0000 3.5000 4.0000