Да, есть два способа заставить interp2
вернуть значимое значение за пределы в соответствии с документами .
'spline'
метод. В отличие от варианта №2 это фактически экстраполирует данные на основе граничных условий сплайна. extrapval
. Эта константа будет возвращена вместо NaN
для всех других методов интерполяции. К сожалению, не существует способа указать что-то вроде «ближайшего соседа на сетке» или что-то как это. Если элементы out-of bounds близки к ребрам, возможно, вы можете просто расширить входной массив. Например, например:
x = [x(1, 1), x(1, :), x(1, end); ...
x(:, 1), x, x(:, end); ...
x(end, 1), x(end, :), x(end, end)]
Документация для csvread является точной, но запутанной и несколько нестандартной для matlab. Основной синтаксис:
a = csvread(filename)
И если вы хотите указать диапазон, вы можете использовать:
a = csvread(filename,R1,C1,[R1 C1 R2 C2])
где R и C - интересующие строки и столбцы. Хитрость заключается в том, что значения строки и столбца имеют нулевой индекс , что необычно для matlab. Также обратите внимание, что если вы указываете диапазон для чтения, первые компоненты аргумента массива совпадают с остальными аргументами.
Например, рассмотрим файл «test.csv», который выглядит следующим образом:
1,2,3,4
1,2,3,4
1,2,3,4
1,2,3,4
Основная операция чтения:
>> a = csvread('testcsv.csv')
a =
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Если вы хотите начать чтение с колонки 2, укажите строку 0 и столбец 1 :
>> a = csvread('testcsv.csv',0,1)
a =
2 3 4
2 3 4
2 3 4
2 3 4
И если вы хотите остановиться после столбца 3 при включении всех строк (то есть до строки 4) :
>> a = csvread('testcsv.csv',0,1,[0 1 3 2])
a =
2 3
2 3
2 3
2 3
В вашем конкретном случае:
>> a = csvread('testcsv2.csv')
a =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
>> a = csvread('testcsv2.csv',1,1,[1 1 2 3])
a =
7 8 9
12 13 14
См. Эту документацию в csvread : https://www.mathworks.com/help/matlab/ref/csvread.html
. На странице вы можете увидеть различные реализации csvread (), такие как
M = csvread(filename,R1,C1)
, где R1 - смещение строки, а C1 - смещение столбца. Вероятно, вы можете попытаться обойти это и решить вашу проблему.