Код ниже отлично подходит для небольших векторов.MATLAB - Проблемы с большими массивами
[X1, X2]=meshgrid(Data1(:,1), Data2(:,1));
[Y1, Y2]=meshgrid(Data1(:,2), Data2(:,2));
[Z1, Z2]=meshgrid(Data1(:,3), Data2(:,3));
Rxy = sqrt((X1-X2).^2 + (Y1-Y2).^2);
Rz = abs(Z1-Z2);
[I1, I2] =find(Rxy<=100 & Rz<=0.2);
Однако, поскольку я работаю с большим количеством данных, Matlab не поддерживает и работает неправильно. Matlab генерирует следующее сообщение:
Ошибка с помощью repmat Запрашиваемых 75027x68517 (38.3GB) массива превышает максимального размер массива предпочтения. Создание массивов выше этого предела может занять много времени и привести к тому, что MATLAB перестанет отвечать на запросы. Для получения дополнительной информации см. Панель ограничения размера или панель предпочтений.
Ищет альтернативы ошибке «из памяти», но я не получаю эффективный способ. Я сделал цикл, чтобы функционировать, но он был очень медленным.
Вы используете 64-разрядную систему. – mmoment
Yikes ... этот размер матрицы ОГРОМНЫЙ. Давайте сделаем шаг назад. Можете ли вы объяснить нам, что именно вы пытаетесь сделать? Если мы знаем цель этого кода, тогда мы даже можем предоставить Альтернативы – rayryeng
Да, я использую окна x64. –