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

如何在MATLAB中从文本文件读取矩阵与向量?

问题:读取文本文件中的矩阵/向量并创建对应变量

我有一个文本文件,每行内容为如下格式的矩阵和向量:

A = [0 1 0 ... 0];
B = [0 1 0 ... 0];
...

请问如何读取这些内容并创建对应的向量和矩阵?

我尝试了以下方法,但创建后的向量为空:

fo = fopen('filename.txt', 'r');

A = fscanf(fo, '%f', [m n]);
解决方案

你的fscanf写法没法匹配文本里的A = [、];这类非数值符号,所以读不到有效数据,导致变量为空。这里提供两种实用解决方案:

方法1:直接执行文本中的赋值语句(简单直接)

因为你的文本每行都是标准的Matlab赋值语句,直接逐行读取并执行即可自动创建变量:

fo = fopen('filename.txt', 'r');
if fo == -1
    error('无法打开目标文件');
end

while ~feof(fo)
    line = fgetl(fo);
    if ~isempty(line)  % 跳过空行
        eval(line);  % 执行当前行的赋值代码,自动生成A、B等变量
    end
end
fclose(fo);

注意:如果文件来源不可信,eval存在执行恶意代码的风险,谨慎使用。

方法2:提取数值并手动创建变量(更安全)

如果不想用eval,可以通过字符串处理提取变量名和数值,再创建变量:

fo = fopen('filename.txt', 'r');
if fo == -1
    error('无法打开目标文件');
end

while ~feof(fo)
    line = fgetl(fo);
    if isempty(line)
        continue;
    end
    
    % 提取变量名(等号左侧的内容)
    var_name = strtrim(strsplit(line, '=')[1]);
    % 提取方括号内的数值字符串
    num_token = regexp(line, '\[(.*?)\]', 'tokens');
    num_str = num_token{1}{1};
    % 转换为数值数组
    var_value = str2num(num_str);
    
    % 将变量添加到工作区
    assignin('base', var_name, var_value);
end
fclose(fo);

这种方法避免执行未知代码,安全性更高,适合处理来源不确定的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:58:16