浅夏雅雅 2024-02-26 21:40 采纳率: 42.9%
浏览 18
已结题

错误使用plot向量长度必须相同问题怎么解决(语言-matlab)


close all;        clear;          clc;


global data_ysbc  data_yssf  data_ysgp  data_test  data_ys;

%% 导入数据

data_ys = xlsread('苹果.xlsx'); 
[data_ysrow, data_yscol] = size(data_ys);

data_ysbc = xlsread('苹果波长.xlsx');    
data_yssf = data_ys(:,data_yscol); 

data_ysgp = data_ys(:,1:data_yscol-1); 

  % 画图——原始光谱图(由于不知道原始数据中的光谱数据是哪个指标,无法进行谱图格式变换)
 Nys_material =length(data_yssf);  %原始物品(经测试)的数量
 
 Color = ['r','g','b','c','m','y','k'];
 
 figure(1);

 for iNys_material = 1:Nys_material
     
     color1 = randi([1,length(Color)],1,1);  %产生一个在[1,length(Color)]的随机数
     
     color2 = Color(color1);  %随机数对应的颜色
     
     hold on;

     plot(data_ysbc,data_ysgp(iNys_material,:),color2 );
     
     title('原始光谱图');    xlabel('波长/nm Wavelength');    ylabel('光谱数据');
     
     xlim([data_ysbc(1) data_ysbc(end)]);
     
     hold off;
     
 end

这个问题还是没有解决,不是转置的问题,使用length函数检查时长度相等,我真的不懂怎么改

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-02-26 21:41
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的代码,错误可能在于 plot 函数的使用上。在循环中,对于每一件物品(原始光谱),您试图绘制的是以 data_ysbc 为 x 轴坐标,而以 data_ysgp(iNys_material,:) 为 y 轴坐标的曲线。但这里的问题可能是 data_ysgp(iNys_material,:) 提供的每一行数据长度与 data_ysbc 的长度不匹配。

    为了修正这个问题,请确保每次循环中用于绘图的数据列长度与波长数组 data_ysbc 的长度一致。假设 data_ysgp 的每一列对应一个不同样品在同一波长下的测量值,并且 data_ysbc 包含了所有样品共享的相同波长序列,您可以修改循环部分如下:

    % 确保 data_ysgp 的列数与样品数量一致
    assert(size(data_ysgp, 2) == Nys_material);
    
    figure(1);
    hold on;
    
    for iNys_material = 1:Nys_material
        color1 = randi([1,length(Color)],1,1);
        color2 = Color(color1);
        
        % 使用整列数据进行绘图,确保与 data_ysbc 长度相同
        plot(data_ysbc, data_ysgp(:, iNys_material), color2);
    end
    
    title('原始光谱图');
    xlabel('波长/nm Wavelength');
    ylabel('光谱数据');
    
    xlim([data_ysbc(1) data_ysbc(end)]);
    
    hold off;
    

    这段修改后的代码将按列遍历 data_ysgp,这样每次绘图时使用的y轴数据长度应该与x轴数据 data_ysbc 相同。如果问题依然存在,请检查您的数据文件以确认数据结构是否符合上述假设。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月28日
  • 已采纳回答 2月27日
  • 创建了问题 2月26日