Rea1Hassan 2023-02-16 17:56 采纳率: 100%
浏览 2468
已结题

【matlab】错误使用 vertcat 要串联的数组的维度不一致。

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');


  • 写回答

4条回答 默认 最新

  • wan9zhi 2023-02-16 18:53
    关注

    这个错误通常是由于垂直串联(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属性,从而解决垂直串联错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • GISer Liu 2023-02-16 18:27
    关注

    以下答案引用自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');
    

    如果我的回答解决了您的问题,请采纳我的回答

    评论
  • 元气少女缘结神 2023-02-16 18:25
    关注

    没看到你用 vertcat 在哪行?我眼花了吗

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-02-16 22:09
    关注
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 创建了问题 2月16日

悬赏问题

  • ¥15 报错问题,只有两个错误,如图片所示,i多次初始化
  • ¥15 matlab runtime 如何收费
  • ¥20 用C语言绘制cs1.6方框透视 出现了点问题 绘制不上去 矩阵数据 和敌人坐标都是正确的
  • ¥15 Tpad api账户 api口令
  • ¥30 ppt进度条制作,vba语言
  • ¥15 生信simpleaffy包下载
  • ¥15 请教一下simulink中S函数相关问题
  • ¥15 在二层网络中,掩码存在包含关系即可通信
  • ¥15 端口转发器解析失败不知道电脑设置了啥
  • ¥15 Latex算法流程图行号自定义