Я пытаюсь сделать тепловую карту в Matlab. Значения, переданные из моей программы, хранятся в большом одномерном массиве. Таким образом, 4-й элемент в массиве из 9 элементов будет (1,2), а 9-й точкой будет (3,3). (1,1) будет первым элементом. Значение хранится в каждом элементе.
Оказавшись в Matlab, я хочу преобразовать этот массив в матрицу, чтобы я мог использовать imagesc(), чтобы показать, насколько высок или низок каждый элемент массива в системе координат x, y.
Мой код работает, но я чувствую, что выполнение задачи занимает слишком много времени.
В моем коде x.index — это нижний индекс массива (x.index(1) будет самым первым элементом массива, который выводит код.)
Я передаю общее количество элементов в массиве и извлекаю квадратный корень, чтобы получить границы x и y. Я назвал эту переменную dim.
grid и x — таблицы, содержащие целые числа.
dim = sqrt(x.raycount());
grid = table();
a = zeros(dim,dim)
for i = 1:height(x)
rem = mod(x.index(i),dim);
grid.yvalue(i,1) = (x.index(i)-rem)/dim;
grid.xvalue(i,1) = rem;
nloc = x.nloc(i)
grid.nloc(i,1) = nloc;
a(grid.xvalue(i),grid.yvalue(i)) = grid.nloc(i);
end
grid
или она просто вспомогательная в процессе получения матрицыa
? (Кроме того, является лиnloc
целым числом или двойным значением? Если второе, сетка содержит не только целые числа.) - person tryman   schedule 17.07.2019grid
или нет, не просто отвечайте в комментариях. Кроме того, как примечание, нам всегда легче помочь вам, когда вы предоставляете минимальный и воспроизводимый пример: MRE - person tryman   schedule 17.07.2019