Рассмотрим следующие значения
result=zeros(11,11);
line=(4:0.4:8);
Представьте результат в виде диаграммы X-Y 11x11. Итак, изначально у нас есть чистый лист бумаги. Как и на графике диаграммы, я хочу заполнить значения строки в матрице результатов, чтобы при отображении матрицы мы получали наклонную линию вверх.
Рассмотрим следующую цифру, которую я хочу получить.
![enter image description here](https://i.stack.imgur.com/d8Ugr.png)
Здесь матрицу результатов можно визуализировать как диаграмму с источником в нижнем левом углу. Теперь для X = 1 строка (1) = 4; для X = 2 строка (2) = 4.4, .. и т. д.
Я написал следующий код, который служит цели.
result=zeros(11,11);
line=(4:0.4:8);
for i=1:length(line)
temp=floor(line(i));
result(length(line)-temp+1,i)=line(i);
end
Есть ли более эффективный способ реализации этого решения? (Я буду работать с матрицей 20000x20000, поэтому метод должен быть быстрым)
Как предлагается в комментариях, описание проблемы выглядит следующим образом:
Допустим, 1000 строк. Все эти линии имеют разные наклоны и точки пересечения. Я знаю диапазон x линий и диапазон y линий. Из данных я могу извлечь не так уж много, если я нанесу эти линии одновременно на одном графике. Полученное изображение будет примерно таким:
![enter image description here](https://i.stack.imgur.com/KEfc2.jpg)
Об этом сюжете можно сделать немного. Однако, если я смогу сохранить эту информацию в большой матрице, тогда я смогу проанализировать, где проходит максимальное количество линий при определенном X-индексе, и соответственно провести дальнейший анализ.
Подробнее
Я дискретизирую ось Y на 1000 равных интервалов:
Пример кода следующим образом:
range=max(data)-min(data);
percent=0.20;
outerRange= max(data)+range*percent - (min(data)-range*percent);
outerRangeValues=min(data)-range*percent:outerRange/1000:max(data)+range*percent;
Даже если вполне возможно, что особенно крутая линия пройдет через 2 или более строк в одном столбце, я выберу только одну из строк, которые будут заполнены строкой в одном столбце. Это можно сделать, взяв среднее значение строк для определенного столбца и присвоив одной строке его значение для этого столбца