matlab绘制热力图,但是提示15行 “错误使用 vertcat,
要串联的数组的维度不一致。”
代码如下:
%Load data "bias10.mat".
load bias10
%Create a figure
figure('DefaultAxesFontSize',16);
ax = gca;
%Create a heatmap
mat = bias{2}.*ones(61,144)+bias{3}'.*ones(61,144);
imagesc(mat);
c = colorbar;
colormap hot;
ylabel(c,'Speed(km/h)');
ax.XTick = [1,13,25,37,49,61,73,85,97,109,121,133,144];
ax.XTickLabel = ['00:00'; '02:00';'04:00';'06:00';'08:00';'10:00';'12:00';...
'14:00';'16:00 ';'18:00';'20:00';'22:00';'23:50'];
xtickangle(45);
ax.YTick = [1,6,11,16,21,26,31,36,41,46,51,56,61];
ax.YTickLabel = ['08-01';'08-06';'08-11';'08-16';'08-21';'08-26';'08-31';...
'09-05';'09-10';'09-15';'09-20';'09-25';'09-30'];
% Save the figure as "heat_map10.pdf"
set(gcf,'PaperSize',[6 4.5]);
set(gcf,'PaperPositionMode','manual');
set(gcf,'PaperPosition',[0 0 6 4.5]);
saveas(gcf,'heat_map10','pdf');
这个错误通常是由于垂直串联(vertcat)的数组在维度上不匹配导致的。具体来说,在此代码中,可能是在以下行中某个地方出现了问题:
ax.XTickLabel = ['00:00'; '02:00';'04:00';'06:00';'08:00';'10:00';'12:00';... '14:00';'16:00 ';'18:00';'20:00';'22:00';'23:50'];
ax.YTickLabel = ['08-01';'08-06';'08-11';'08-16';'08-21';'08-26';'08-31';... '09-05';'09-10';'09-15';'09-20';'09-25';'09-30'];
这些行试图将字符数组串联在一起,但是由于它们的维度不匹配,所以会导致错误。要解决此问题,可以将字符数组转换为单个字符串,然后使用大括号将它们放在一个单元格数组中。例如,将这些行更改为以下内容:
ax.XTickLabel = {'00:00', '02:00', '04:00', '06:00', '08:00', '10:00', '12:00', ...
'14:00', '16:00', '18:00', '20:00', '22:00', '23:50'};
ax.YTickLabel = {'08-01', '08-06', '08-11', '08-16', '08-21', '08-26', '08-31', ...
'09-05', '09-10', '09-15', '09-20', '09-25', '09-30'};
这将创建一个单元格数组,其中每个元素都是一个字符串。这些字符串可以按预期方式传递给XTickLabel和YTickLabel属性,从而解决垂直串联错误。
以下答案引用自GPT-3大模型,请合理使用:
的解决方案
解决方案:
matlab的vertcat函数是用于将两个矩阵串联起来的。提示中的错误指出,这些矩阵的列数不同,无法将其串联起来。
要解决此问题,可以在创建mat变量之前添加一个矩阵填充步骤,以确保两个矩阵具有相同的列数:
%Load data "bias10.mat".
load bias10
%Pad the matrices with zeros to ensure same column size
padded_bias2 = [bias{2};zeros(size(bias{3}',1)-size(bias{2},1),size(bias{2},2))];
padded_bias3 = [bias{3}';zeros(size(bias{2},1)-size(bias{3}',1),size(bias{3}',2))];
%Create a figure
figure('DefaultAxesFontSize',16);
ax = gca;
%Create a heatmap
mat = padded_bias2.*ones(61,144)+padded_bias3'.*ones(61,144);
imagesc(mat);
c = colorbar;
colormap hot;
ylabel(c,'Speed(km/h)');
ax.XTick = [1,13,25,37,49,61,73,85,97,109,121,133,144];
ax.XTickLabel = ['00:00'; '02:00';'04:00';'06:00';'08:00';'10:00';'12:00';...
'14:00';'16:00 ';'18:00';'20:00';'22:00';'23:50'];
xtickangle(45);
ax.YTick = [1,6,11,16,21,26,31,36,41,46,51,56,61];
ax.YTickLabel = ['08-01';'08-06';'08-11';'08-16';'08-21';'08-26';'08-31';...
'09-05';'09-10';'09-15';'09-20';'09-25';'09-30'];
% Save the figure as "heat_map10.pdf"
set(gcf,'PaperSize',[6 4.5]);
set(gcf,'PaperPositionMode','manual');
set(gcf,'PaperPosition',[0 0 6 4.5]);
saveas(gcf,'heat_map10','pdf');
如果我的回答解决了您的问题,请采纳我的回答
没看到你用 vertcat 在哪行?我眼花了吗