Matlab(Octave)仅绘制Y=X²函数图,无法读取CSV文件的原因咨询
问题原因分析
核心问题1:CSV文件读取方式错误
textscan函数的第一个参数必须是文件标识符,而非直接传入文件名。你当前的代码data = textscan('mam.csv')无法正确打开并读取文件,正确的读取流程是先通过fopen获取文件句柄,读取完成后关闭文件:
fid = fopen('mam.csv', 'r'); % 打开CSV文件,获取文件标识符 data = textscan(fid, '%f %f'); % 指定读取两列浮点数格式 fclose(fid); % 关闭文件,释放资源
核心问题2:未处理读取数据并绘制到图中
即便文件读取成功,你的代码也没有从读取的data中拆分出CSV里的X、Y数据,更没有调用plot将其添加到已有图形中。需要补充以下步骤:
- 将cell数组转换为矩阵:
data_mat = cell2mat(data);(此时data_mat是100行2列的矩阵,第一列为CSV中的X,第二列为Y) - 开启图形保持(避免覆盖已绘制的
Y=X²图形):hold on - 绘制CSV数据:
plot(data_mat(:,1), data_mat(:,2), 'r--')(用红色虚线区分原函数,可自行调整样式)
其他冗余/错误点
- 代码中定义的
nrows=2和ncolumns=100完全未被使用,属于冗余代码。 - 错误使用
transpose(data):textscan读取两列数据后得到的cell数组,经cell2mat转换后是100×2的矩阵,转置后变成2×100,反而不利于拆分X、Y数据,无需执行转置操作。 - 绘图标签写法不规范:
xlabel X和YLabel Y应改为xlabel('X')和ylabel('Y')(需给标签文本加引号)。
内容的提问来源于stack exchange,提问作者Анастасия
相关产品推荐
相关产品推荐

