MATLAB赋值维度不同,代码解决

以下代码,在运行后,显示第20行,无法执行赋值,维度不同,应怎么修改;

t=xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','A3:A1048576');
mc_FL=xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','B3:B1048576');
mc_FR=xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','c3:c1048576');
mc_RL=xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','d3:d1048576');
mc_RR=xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','e3:e1048576');
t_start=60;
i=1;

while (t_start>=60&&t_start<=100)
[row(i),col(i)]=find(t==t_start);
mc1(i)=mc_FL(row(i)); 
mc2(i)=mc_FR(row(i));
mc3(i)=mc_RL(row(i));
mc4(i)=mc_RR(row(i));
  if mc1(i)+2000>mc_FL(end)||mc2(i)+2000>mc_FR(end)||mc3(i)+2000>mc_RL(end)||mc4(i)+2000>mc_RR(end)
     return
  else
     [row_11(:,i),col_11(:,i)]=find(mc_FL==mc1(i)+2000);
     row_1(i)=max(row_11(:,i));
     [row_21(:,i),col_21(:,i)]=find(mc_FR==mc2(i)+2000);
     row_2(i)=max(row_21(:,i));
     [row_31(:,i),col_31(:,i)]=find(mc_RL==mc3(i)+2000);
     row_3(i)=max(row_31(:,i));
     [row_41(:,i),col_41(:,i)]=find(mc_RR==mc4(i)+2000);
     row_4(i)=max(row_41(:,i));
     t_FL(i)=t(row_1(i));
     t_FR(i)=t(row_2(i));
     t_RL(i)=t(row_3(i));
     t_RR(i)=t(row_4(i));
     a(:,i)=[t_FL(i),t_FR(i),t_RL(i),t_RR(i)];
     t1(i)=max(a(:,i));
     [row1(i),col1(i)]=find(t==t1(i));
     mc1_1(i)=mc_FL(row1(i))-mc1(i);
     mc2_1(i)=mc_FR(row1(i))-mc2(i);
     mc3_1(i)=mc_RL(row1(i))-mc3(i);
     mc4_1(i)=mc_RR(row1(i))-mc4(i);
  end
  t_start=t1(i)+0.001;
  i=i+1;
end


你没给数据,也不知道具体是啥情况呀,不过看代码,大概率就是某种情况出现了右边为空集,所以赋值失败

根据问题描述可以看出,出现维度不匹配的问题是因为row在赋值前没有提前定义其大小,导致赋值操作时维度不匹配。可以通过预先定义row的大小来解决该问题。

代码修改如下:

t = xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx', 'Data1', 'A3:A1048576');
mc_FL = xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','B3:B1048576');
mc_FR = xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','C3:C1048576');
mc_RL = xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','D3:D1048576');
mc_RR = xlsread('E:\MATLAB\dewesoft数据\PLS-itpms-_0001.xlsx','Data1','E3:E1048576');
t_start = 60;
i = 1;

row = zeros(1, 100); % 提前定义row的大小

while (t_start >= 60 && t_start <= 100)
    row(i) = t(t_start);
    t_start
    i = i + 1;
end