用Matlab做for循环,怎样存储每一次循环结果?

x是121*4的矩阵,y是121*632的矩阵,我写的代码是x对y的每列做线性回归,并且得到t统计量和他对应的p值。在这个过程中因为要对应632列分别回归,所以用for循... 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。

想请教各位究竟要怎样改才能存储每一次过程啊?谢谢谢谢!
展开
 我来答
旅游路上小知识
高粉答主

2020-10-17 · 我是旅行小达人,专注解决旅行中遇到的问题
旅游路上小知识
采纳数:2 获赞数:83097

向TA提问 私信TA
展开全部

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,直接修改为如下代码即可。

themanisjimmy
2016-01-08 · TA获得超过2756个赞
知道小有建树答主
回答量:843
采纳率:89%
帮助的人:229万
展开全部
可以使用一个矢量。
循环之前定义一个空矢量,循环过程中把每一次要存的结果加到矢量里面。最后所有的中间结果也就都存储在了这个矢量里面。

简单的示例:
clc;clear;
a=[];
for i=1:100
a=[a;i^2];
end
a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
N_0_1
高粉答主

推荐于2018-02-26 · 关注我不会让你失望
知道大有可为答主
回答量:8628
采纳率:47%
帮助的人:818万
展开全部
可以定于好一个用来存储循环结果的数组,将每次循环的结果送到这个数组中。
例子:
a=ones(1,10);
for k=1:10
a(k)=k;
end
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenfeng201
推荐于2017-10-06 · TA获得超过1103个赞
知道小有建树答主
回答量:775
采纳率:100%
帮助的人:320万
展开全部
不懂你的回归逻辑,也不懂你的数据结构

仅仅从语法上说,mdl是632行1列的数据,但是后面赋值时,你的语法是mdl(:,i)=
不仅仅是一列

因此,是否mdl(:,i)=fitlm(x,a)应当改成:mdl(i,1)=fitlm(x,a);
追问
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。

所以还想继续请您给一点建议。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式