NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
Как тарифицируют Ящерицу , записал, что можно использовать освобожденный для загрузки данных в вектор. Я просто хочу расшириться немного на его ответе.
>> fid=fopen('data.bin','rb') % opens the file for reading
>> A = fread(fid, count, 'int16') % reads _count_ elements and stores them in A.
команды fopen и освободил значение по умолчанию к Прямому порядку байтов [1] кодирование для целых чисел. Если Ваш файл является Обратным порядком байтов, закодировал Вас, должен будет измениться , освободил к [1 139]
>> A = fread(fid, count, 'int16', 'ieee-be');
кроме того, если Вы хотите читать, целый файл установил
>> count=inf;
и если Вы хотите считать данные в матрицу с [1 115] n использование столбцов
>> count=[n inf];
Что касается обвинения данных в файл. Команда, fwrite, в ответ счета запишет в двоичный файл. Если Вы хотите записать данные в текстовый файл, можно использовать ссылки dlmwrite
>> dlmwrite('data.csv',A,',');
[1] http://en.wikipedia.org/wiki/Endianness
формат машины (IE, , IEEE - , ieee-le , vaxd и т.д.) двоичных данных может быть указан или в , fopen или освободил команды в Matlab. Детали поддерживаемого формата машины могут быть найдены в документации Matlab fopen.
Scott French комментарий к [1 111] ответ счета предлагает считать данные в int16 переменную. Чтобы сделать это использование
>> A = int16(fread(fid,count,precision,machineFormat));
, где количество является размером/формой данных, которые будут считаны, , точность является форматом данных, и , machineformat является кодированием каждого байта.
Посмотрите команды fseek для перемещения файла. Например,
>> fseek(fid,0,'bof');
перемотает файл к началу, где bof обозначает [1 129] начало файла .
Я обычно очень не хочу видеть ссылки в ответе, но это выглядит достаточно близким:
http://www.mathworks.com/support/tech-notes/1400/1403.html
относительно второй части настройки производительности, это были 6 лет, с тех пор как я использовал Matlab, таким образом, я не знаю.
HTH
Принятие Вас знает, сколько значений Вы сохранили в файле, можно сделать что-то вроде этого для чтения данных в массив.
fid = fopen('data.bin','rb')
A = fread(fid, count, 'int16')
Для записи данных в файл делают это:
fid = fopen('data.bin','w')
count = fwrite(fid, A, 'int16')
функция fwrite возвращает число элементов (не байты) записанный в файл.
Насколько настройка производительности идет, можно считать данные в блоках, чтобы только использовать столько, сколько необходимо обработать. Это - то же на любом языке, и нет никакого способа ускорить его, это характерно для Matlab.