以下代码,在运行后,显示第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