【发布时间】:2019-11-26 13:33:02
【问题描述】:
我正在尝试在 Matlab 中制作热图。从我的程序传出的值存储在一个大的一维数组中。因此,9 元素数组上的第 4 个元素将是 (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是整数还是双精度值?如果是第二个,则网格不只包含整数。) -
扩展上述评论,请编辑您的问题以澄清您是否需要
grid,不要只在cmets中回答。此外,请注意,当您提供一个最小且可重现的示例时,我们总是更容易为您提供帮助:MRE
标签: matlab matrix optimization assign