You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中如何从arrayfun获取结果并输出为2×1000双精度矩阵

解决方法

你可以通过以下两种常用方式实现需求:

方法1:直接转换已生成的cell数组

如果已经运行代码得到了cell数组x1,直接对cell元素做维度拼接即可:

% 方法1.1 沿列方向拼接所有cell内的2×1向量
x_mat = cat(2, x1{:});

% 方法1.2 用cell2mat直接转换,效果和上述写法一致
x_mat = cell2mat(x1);

两种写法都会直接得到2行1000列的双精度矩阵,逻辑是把每个cell存储的2×1最优解按顺序拼在列维度上。

方法2:修改arrayfun参数直接输出数值矩阵

如果还未运行代码,可以直接调整arrayfun的写法,省去生成中间cell数组的步骤:

clear
clc
a = 1:1000;
b = linspace(100,200,1000);     
% 把fminsearch返回的2×1向量转成1×2行向量,开启UniformOutput直接输出数值数组
x_temp = arrayfun( @(v,w) fminsearch(@(x) (x(1)-v).^2 + (x(2)-w).^2, [1;1]).', a, b, 'UniformOutput', true);
% 转置得到2×1000的目标矩阵
x_mat = x_temp.';

这种方式内存占用更低,不需要额外存储1×1000的cell数组,适合数据量更大的场景。

内容的提问来源于stack exchange,提问作者Chang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:45:04