Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Я сохранил его как текст с помощью Java в MATLAB. Код MATLAB:
pw=java.io.PrintWriter(java.io.FileWriter('c:\\retail.txt'));
line=num2str(0:size(data,2)-1);
pw.println(line);
for index=1:length(data)
disp(index);
line=num2str(full(data(index,:)));
pw.println(line);
end
pw.flush();
pw.close();
Здесь data
чрезвычайно большая разреженная матрица.
Можно использовать, находят для получения индекса & векторы значения:
[i,j,val] = find(data)
data_dump = [i,j,val]
можно воссоздать данные из data_dump с spconvert, который предназначен для "Импорта из внешнего формата разреженной матрицы" (таким образом, я предполагаю, что это - хороший формат экспорта):
data = spconvert( data_dump )
можно сохранить к ASCII с:
save -ascii data.txt data_dump
, Но это выводит индексы как дважды, можно выписать его более приятно с fopen/fprintf/fclose:
fid = fopen('data.txt','w')
fprintf( fid,'%d %d %f\n', transpose(data_dump) )
fclose(fid)
Hope это помогает.
Сохраните разреженную матрицу как .mat
файл. Затем в другой программе пользуйтесь подходящей библиотекой для чтения .mat
файл.
, Например, если другая программа записана в Python, можно использовать эти scipy.io.mio.loadmat
функция, которая поддерживает разреженные массивы и дает Вам редкую numpy матрицу.
Вы пытались делить его?
я имею в виду попытку, называющую полным () на 1 000 первых строк (или 5000), и затем повторяю процесс, если это работает.
Используйте эти find
функция для получения индексов ненулевых элементов...
idcs = find(data);
vals = data(idcs);
...save the index vector and value vector in whatever format you want...
, Если Вы хотите, можно использовать ind2sub
для преобразования линейных индексов в строку, нижние индексы столбца.
, Если необходимо воссоздать разреженную матрицу в matlab от нижних индексов + значения, используйте spconvert
.
Если бы это - в значительной степени одно соглашение времени, то я просто выполнил бы итерации через матрицу и записал бы матрицу в ASCII-файл грубой силой или иначе использование Veynom предложение и назвал бы полным () на подмножестве строк. Это может требовать времени, но это будет, вероятно, сделано быстрее, чем это могло бы взять, чтобы изучить, как читать в .mat файле за пределами среды MATLAB.
, Если бы это - что-то, которое необходимо сделать на повторяющейся основе, тогда я взял бы совет Vebjorn и пользовался бы библиотекой для чтения .mat файла.