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

MATLAB读取CSV:结构体转double及数组切片实现方案咨询

在MATLAB中实现与Python等效的CSV读取及数组切片操作

直接读取CSV并完成切片的正确方法

你之前的代码失效主要有两个核心问题:

  • readtable返回的是表格对象(table),并非数值数组,无法像Python的numpy数组那样直接进行数组切片;
  • MATLAB采用1起始索引,且切片为闭区间,和Python的0起始、左闭右开切片逻辑完全不同。

改用readmatrix(MATLAB R2019a及以上版本支持)可直接读取CSV为double类型的数值数组,完全匹配Python中np.loadtxt的返回结果,再按MATLAB的索引规则完成切片:

% 读取CSV为double数值数组
data = readmatrix('datafile.csv');

% 对应Python的sub_arr_1 = df[0:4, 0:4]
% Python的0:4取前4行/列(索引0-3),对应MATLAB的1:4
a1 = data(1:4, 1:4);

% 对应Python的sub_arr_2 = df[:, 4:8]
% Python的4:8取第4到第7列,对应MATLAB的5:8
a2 = data(:, 5:8);

% 对应Python的sub_arr_3 = df[:, 8:12]
% Python的8:12取第8到第11列,对应MATLAB的9:12
a3 = data(:, 9:12);

若你的MATLAB版本较旧(无readmatrix),可使用csvread替代:

data = csvread('datafile.csv');
% 切片逻辑与上述一致

可选方案:转为.mat文件操作

如果你偏好使用.mat格式,有两种实现方式:

  1. 在Python中转换后导入MATLAB
import numpy as np
import scipy.io as sio

df = np.loadtxt(open("datafile.csv", "rb"), delimiter=",")
sio.savemat('datafile.mat', {'data': df})

在MATLAB中加载并操作:

load('datafile.mat');
a1 = data(1:4, 1:4);
% 其余切片操作同上
  1. 在MATLAB中读取后保存为.mat
data = readmatrix('datafile.csv');
save('datafile.mat', 'data');
% 后续直接load即可使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:30