x是121*4的矩阵,y是121*632的矩阵,我写的代码是x对y的每列做线性回归,并且得到t统计量和他对应的p值。在这个过程中因为要对应632列分别回归,所以用for循环。我想用如下代码从而存储每一次结果,但是显示错误
代码:
for i=1:632
a=y(:,i);
mdl=zeros(632,1);
mdl(:,i)=fitlm(x,a) %x对y做回归
end
报错:从 LinearModel 转换为 double 时出现以下错误:
错误使用 double
无法从 LinearModel 转换为 double。
想请教各位究竟要怎样改才能存储每一次过程啊?谢谢谢谢!
1、首先,打开MATLAB R2018a,(可通过Ctrl+N)新建一个脚本,保存为TEST.m。
2、然后,在脚本中输入如下代码,如下图所示。
3、接着,点击编辑器中的运行命令按钮,程序输出for_count = 20,即这里执行了20次循环。但如果按照C++中的FOR循环功能去理解,这里应该只执行7次循环,且i_record的最终结果为[3,6,9,12,15,18,21]。
4、如果在MATLAB中编程时需要在循环的过程中改变步长、终止等参数,建议使用while命令,对于TEST.m,直接修改为如下代码即可。
x是121*4的矩阵,包含了4个变量。y是121*632的矩阵,每一列分别表示为y1 y2 y3 ...y632, 我要做的是用x矩阵分别对y矩阵的每一列做回归,这样会得到632个t值和p值。因此要用到for循环来完成。但是,因为我要把632次结果都存储下来,就要建立一个mdl矩阵才行。
按照你的方法,还是显示
无法从 LinearModel 转换为 double。
所以还想继续请您给一点建议。
x是121*4的矩阵,包含了4个变量。y是121*632的矩阵,每一列分别表示为y1 y2 y3 ...y632, 我要做的是用x矩阵分别对y矩阵的每一列做回归,这样会得到632个t值和p值。因此要用到for循环来完成。但是,因为我要把632次结果都存储下来,就要建立一个mdl矩阵才行。
按照你的方法,还是显示
无法从 LinearModel 转换为 double。
所以还想继续请您给一点建议。