Как установить конечные пределы для csvread?

Да, есть два способа заставить interp2 вернуть значимое значение за пределы в соответствии с документами .

  1. Использовать интерполяцию 'spline' метод. В отличие от варианта №2 это фактически экстраполирует данные на основе граничных условий сплайна.
  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)]

0
задан Pipenguin 15 January 2019 в 17:52
поделиться

2 ответа

Документация для 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
0
ответ дан mhopeng 15 January 2019 в 17:52
поделиться

См. Эту документацию в csvread : https://www.mathworks.com/help/matlab/ref/csvread.html

. На странице вы можете увидеть различные реализации csvread (), такие как

M = csvread(filename,R1,C1)

, где R1 - смещение строки, а C1 - смещение столбца. Вероятно, вы можете попытаться обойти это и решить вашу проблему.

0
ответ дан Koralp Catalsakal 15 January 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: