有一列表
w1.表
w2.表
w3.表
w4.表
请问如何生成新的一列表
new_w1.表(等于w1.表)
new_w2.表(等于原来的w1 矩阵 .乘原来的w2 矩阵)
new_w3.表(等于原来的w1 .乘 w2 .乘w3)
new_w4.表(等于原来的w1 乘 w2 .乘 w3 点乘 w4)
上面是列举了一部分,有很多,要先读取excel中的矩阵,再 点乘,这样的循环如何写
循环相乘,依次点乘起来
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- 「已注销」 2023-03-08 17:29关注
“Devil组”引证GPT后的撰写:
用循环和递归方法实现这个任务。以下是使用循环的代码:% 假设w1、w2、w3和w4是已经定义好的矩阵 % 初始化new_w1等于w1 new_w1 = w1; % 初始化一个临时变量为w1 temp = w1; % 循环遍历w2到w4 for i = 2:4 % 点乘临时变量和当前矩阵 temp = temp * eval(['w', num2str(i)]); % 将结果赋值给new_w eval(['new_w', num2str(i), ' = temp;']); end先初始化了new_w1为w1。然后使用一个临时变量temp来保存当前矩阵的乘积,从w2开始循环遍历,每次将temp和当前矩阵相乘并赋值给temp,最后将结果赋值给相应的new_w。
使用递归的方法实现如下:
% 假设w1、w2、w3和w4是已经定义好的矩阵 % 定义递归函数 function result = multiply_matrices(matrices, index) if index == 1 % 如果是第一个矩阵,直接返回 result = matrices{index}; else % 否则递归调用函数 temp = multiply_matrices(matrices, index - 1); result = temp * matrices{index}; end end % 调用递归函数生成new_w1到new_w4 new_w1 = w1; new_w2 = multiply_matrices({w1, w2}, 2); new_w3 = multiply_matrices({w1, w2, w3}, 3); new_w4 = multiply_matrices({w1, w2, w3, w4}, 4);定义了一个递归函数multiply_matrices,该函数接受一个矩阵列表和当前矩阵的索引。如果是第一个矩阵,直接返回;否则递归调用函数,将结果与当前矩阵相乘并返回。最后调用递归函数生成new_w1到new_w4。
解决 无用评论 打赏 举报 编辑记录