Matlab错误使用plot常见原因和解决方法

plot 是 Matlab 最常用函数,新手经常碰到"错误使用plot",报错不知道哪里错,我整理最常见原因,对号入座就能解决。
最常见:x 和 y 长度不一样
这个最多见,plot(x,y) 要求 x 和 y 元素个数一样,不一样就报错"Vectors must be the same length"。
错在哪:
x = 1:10;
y = sin(x);
y = y(1:end-1); % 切掉最后一个,现在y长度9,x长度10
plot(x,y); % 报错了
解决:检查 length(x) 和 length(y),不一样就改,你删了y哪些,x对应也要删,长度对了就不报错。
正确写法:
x = 1:0.1:10;
y = sin(x);
idx = y >= 0;
x = x(idx); % x也要对应删
y = y(idx);
plot(x,y); % 长度一致,正常出图
对矩阵 plot,要求你画的维度长度一样,检查 size 改对就好了。
第二常见:参数错了,颜色线型不对
你这么写就错:
plot(x,y,red); % 错了,颜色要加引号
颜色线型要放单引号或者双引号里面:
正确:
plot(x,y,'r'); % 对了
plot(x,y,"red"); % 也对
常见错:
plot(x,y,red)→ 错,没引号plot(x,y,-r)→ 错,顺序不对,应该'r-'plot(x,y,linewidth 1.5)→ 错,参数名对,要加逗号'LineWidth',1.5
正确写法:
plot(x, y, 'r--', 'LineWidth', 1.5);
顺序对了,引号对了,就没问题。
你变量名覆盖了plot
你自己定义了一个变量叫 plot,把函数覆盖了,再调用plot就当成变量,不对了:
例子:
plot = [1 2 3];
% ...
plot(x,y); % 错了,plot现在是数组,不是函数
报错大概就是"索引超出矩阵维度",其实就是重名了。
解决:
clear plot
plot(x,y); % 现在对了,恢复成函数
检查方法:输入 which plot,显示 "plot is a variable" 就是重名,clear 就好。以后起名别和内置函数重名,就不会错。
标点错了,用了中文标点
你括号逗号用了中文全角,Matlab 不认,肯定错:
错:
plot(x,y);% 全角括号逗号,错了
对:
plot(x, y); % 英文标点,对了
现在编辑器一般会高亮错,你写的时候看一下,代码里面所有标点都是英文,除了注释里面中文没关系。
数据类型不对,cell 没提取对
数据在 cell 或者 table 里面,你提取不对,拿出来还是 cell,plot 不认:
错:
C = {x, y};
plot(C(1), C(2)); % 错了,C(1) 还是cell,不是数值数组
对:
C = {x, y};
plot(C{1}, C{2}); % 对了,花括号提取内容
table 数据,新版本直接 plot(T.x, T.y) 没问题,老版本转数组:
plot(table2array(T(:,1)), table2array(T(:,2))); % 也对
空数据或者全 NaN
你x 或者 y 全空,或者全 NaN,plot 出不来,要么报错要么出来空白图,其实就是没东西可画。
检查一下,前面处理数据的时候,是不是过滤条件错了,把所有点都滤掉了,改过滤条件就好了。
排错步骤
碰到 plot 错,按顺序查:
- 先看x y长度,不一样改长度,这个百分之六十都是这个问题,改完就好
- 检查参数,引号标点对不对,对了再往下
- 检查是不是重名了,
which plot看看,clear 解决 - 检查数据类型,cell 提取对不对,有没有空数据
按顺序查,大部分第一步找到问题,改了就能出图。
"错误使用plot" 大部分就是x y长度不对,数一下,改对就好了,都是小问题。

浙公网安备 33010602011771号