[已答复] 错误使用 plot 矢量长度必须相同

[复制链接]
liujialin0602 发表于 2018-5-7 10:14:16
x=6:00:1:22:00; %确定x轴范围
a=[0,0,0,142,994,3976,6390,8671,7544,6328,4278,3852,1437,35,0,0,0]; %a数据y值
b=[0,284,1420,4402,7384,9941,11503,12595,12737,11032,10695,7615,3594,1597,319,0,0]; %b数据y值

plot(x,a,'-',x,b,'*-'); %折线绘图
axis([6:00,22:00,0,13000]) %确定x与y轴框图大小

set(gca,'XTick',[6:00:1:22:00]) %改变x轴坐标间隔显示,范围是0-60,这里间隔为3
set(gca,'YTick',[0:1000:13000]) %改变y轴坐标间隔显示,范围是0-50,这里间隔为3

xlabel('时刻') %x坐标的描述
ylabel('光伏输出功率/W') %y坐标的描述

axis equal


运行后报错第5行
错误使用 plot 矢量长度必须相同

请问是为什么,怎样修改,我这里绘制的是温度与光伏出力的关系。
求大神解答,谢谢!

19 条回复


liujialin0602 发表于 2018-5-7 10:44:47
在线等 急问 谢谢大神了

飞时雨 发表于 2018-5-7 12:21:30
liujialin0602 发表于 2018-5-7 10:44
在线等 急问 谢谢大神了
  1. x=hours(6:22); %确定x轴范围
  2. a=[0,0,0,142,994,3976,6390,8671,7544,6328,4278,3852,1437,35,0,0,0]; %a数据y值
  3. b=[0,284,1420,4402,7384,9941,11503,12595,12737,11032,10695,7615,3594,1597,319,0,0]; %b数据y值

  4. plot(x,a,'-',x,b,'*-')
  5. set(gca,'XTick',x,'FontSize',7.5)
  6. set(gca,'YTick',0:1000:13000)
  7. xtickformat('hh:mm')
  8. ylim([0,13000])

  9. xlabel('时刻') %x坐标的描述
  10. ylabel('光伏输出功率/W') %y坐标的描述
复制代码

liujialin0602 发表于 2018-5-8 09:13:10

你好,谢谢您的帮助,可是还有一些小问题,验证后出现一个错误
未定义与 'double' 类型的输入参数相对应的函数 'hours'。

出错 wendu (line 1)
x=hours(6:22); %确定x轴范围

请再帮忙看下,谢谢

liujialin0602 发表于 2018-5-8 09:38:25

我把hours改成hour 程序可以运行出图,但是有报错

错误使用 set
值必须单调增加

图里横坐标也并不是时间,而且图像成了一条竖线

QQ图片20180508093856.png

飞时雨 发表于 2018-5-8 10:24:34
liujialin0602 发表于 2018-5-8 09:38
我把hours改成hour 程序可以运行出图,但是有报错

错误使用 set

我运行的没问题~可能是你的版本太低了,hours函数是2014b之后的版本才有的~
草图2.png

liujialin0602 发表于 2018-5-8 11:14:07
飞时雨 发表于 2018-5-8 10:24
我运行的没问题~可能是你的版本太低了,hours函数是2014b之后的版本才有的~
...

那好的 我的刚好是2014a 哈哈 我去装个新版本吧 谢谢了

liujialin0602 发表于 2018-5-8 15:14:47
飞时雨 发表于 2018-5-8 10:24
我运行的没问题~可能是你的版本太低了,hours函数是2014b之后的版本才有的~
...

你好呀,要是不用hours函数怎么修改呢?一时半会儿新版本不好装

飞时雨 发表于 2018-5-8 15:49:03
liujialin0602 发表于 2018-5-8 15:14
你好呀,要是不用hours函数怎么修改呢?一时半会儿新版本不好装
  1. x=6:22; %确定x轴范围
  2. a=[0,0,0,142,994,3976,6390,8671,7544,6328,4278,3852,1437,35,0,0,0]; %a数据y值
  3. b=[0,284,1420,4402,7384,9941,11503,12595,12737,11032,10695,7615,3594,1597,319,0,0]; %b数据y值

  4. plot(x,a,'-',x,b,'*-')
  5. set(gca,'FontSize',7.5)
  6. set(gca,'YTick',0:1000:13000)
  7. j=1;
  8. for i = 6:22
  9.     if i<=9
  10.         X{j} =[num2str(0),num2str(i),':',num2str(0),num2str(0)];
  11.     else
  12.         X{j} =[num2str(i),':',num2str(0),num2str(0)];
  13.     end
  14.     j=j+1;
  15. end
  16. set(gca,'xtick',6:22)
  17. set(gca,'xticklabel',X)
  18. ylim([0,13000])


  19. xlabel('时刻') %x坐标的描述
  20. ylabel('光伏输出功率/W') %y坐标的描述
复制代码

liujialin0602 发表于 2018-5-8 16:11:54

请收下我的膝盖!谢谢!

liujialin0602 发表于 2018-5-14 10:26:28

你好,想再请教您一下,
我对数据进行了增加1倍,即每一个小时中间加入半点值,例如6:00-6:30-7:00-7:30-......-21:00-21:30-22:00,
数据我以加入到程序中,运行出错,
错误使用 plot
向量长度必须相同。

出错 wendu (line 5)
plot(x,a,'-',x,b,'*-')


请问该如何修改,以下是程序

x=hours(6:22) + minutes(30); %确定x轴范围
a=[0,0,0,0,0,0,142,710,994,2556,3976,4970,6390,8103,8671,8955,7544,6932,6328,5565,4278,3994,3852,2574,1437,585,301,0,0,0,0,0,0]; %a数据y值
b=[0,0,284,710,1420,2414,4402,5680,7384,8520,9941,10651,11503,12055,12595,12656,12737,12994,11032,10695,10305,8929,7615,6319,3594,2875,1597,1171,603,177,0,0,0]; %b数据y值

plot(x,a,'-',x,b,'*-')
set(gca,'XTick',x,'FontSize',7.5)
set(gca,'YTick',0:1000:13000)
xtickformat('hh:mm')
ylim([0,13000])

xlabel('时刻') %x坐标的描述
ylabel('光伏输出功率/W') %y坐标的描述


飞时雨 发表于 2018-5-14 10:36:00
liujialin0602 发表于 2018-5-14 10:26
你好,想再请教您一下,
我对数据进行了增加1倍,即每一个小时中间加入半点值,例如6:00-6:30-7:00-7:30-. ...
  1. x=hours(6:22); %确定x轴范围
  2. a=[0,0,0,142,994,3976,6390,8671,7544,6328,4278,3852,1437,35,0,0,0]; %a数据y值
  3. b=[0,284,1420,4402,7384,9941,11503,12595,12737,11032,10695,7615,3594,1597,319,0,0]; %b数据y值

  4. plot(x,a,'-',x,b,'*-')

  5. c=hours(6):minutes(30):hours(22);
  6. set(gca,'XTick',c,'FontSize',7.5)
  7. set(gca,'YTick',0:1000:13000)
  8. xtickformat('hh:mm')
  9. axis tight

  10. xlabel('时刻') %x坐标的描述
  11. ylabel('光伏输出功率/W') %y坐标的描述
复制代码

liujialin0602 发表于 2018-5-14 10:43:58

您好,我是把数据增加1倍了,您这个程序数据还是之前的,运行后发现x轴确实加倍,但y值却没有对应值
我自己把数据加进去了,如下
x=hours(6:22); %确定x轴范围
a=[0,0,0,0,0,0,142,710,994,2556,3976,4970,6390,8103,8671,8955,7544,6932,6328,5565,4278,3994,3852,2574,1437,585,301,0,0,0,0,0,0]; %a数据y值
b=[0,0,284,710,1420,2414,4402,5680,7384,8520,9941,10651,11503,12055,12595,12656,12737,12994,11032,10695,10305,8929,7615,6319,3594,2875,1597,1171,603,177,0,0,0]; %b数据y值

plot(x,a,'-',x,b,'*-')

c=hours(6):minutes(30):hours(22);
set(gca,'XTick',c,'FontSize',7.5)
set(gca,'YTick',0:1000:13000)
xtickformat('hh:mm')
axis tight

xlabel('时刻') %x坐标的描述
ylabel('光伏输出功率/W') %y坐标的描述

但是运行出错,提示如下

错误使用 plot
向量长度必须相同。

出错 Untitled4 (line 5)
plot(x,a,'-',x,b,'*-')

飞时雨 发表于 2018-5-14 10:46:29
liujialin0602 发表于 2018-5-14 10:43
您好,我是把数据增加1倍了,您这个程序数据还是之前的,运行后发现x轴确实加倍,但y值却没有对应值
我自 ...
  1. clear;clc;close all
复制代码

这一行加最前面~

liujialin0602 发表于 2018-5-14 10:51:29

这个我每次运行都清除啦~
我的意思是您上面那个程序数据没有加全部的,x轴确实有6.30/7.30/8.30.....这些点,但是y轴没有对应数值,
我把数据补全后运行出错,

飞时雨 发表于 2018-5-14 10:54:17
liujialin0602 发表于 2018-5-14 10:51
这个我每次运行都清除啦~
我的意思是您上面那个程序数据没有加全部的,x轴确实有6.30/7.30/8.30.....这些 ...
  1. x=hours(6):minutes(30):hours(22); %确定x轴范围
  2. a=[0,0,0,0,0,0,142,710,994,2556,3976,4970,6390,8103,8671,8955,7544,6932,6328,5565,4278,3994,3852,2574,1437,585,301,0,0,0,0,0,0]; %a数据y值
  3. b=[0,0,284,710,1420,2414,4402,5680,7384,8520,9941,10651,11503,12055,12595,12656,12737,12994,11032,10695,10305,8929,7615,6319,3594,2875,1597,1171,603,177,0,0,0]; %b数据y值

  4. plot(x,a,'-',x,b,'*-')
  5. set(gca,'XTick',x,'FontSize',7.5)
  6. set(gca,'YTick',0:1000:13000)
  7. xtickformat('hh:mm')
  8. ylim([0,13000])

  9. xlabel('时刻') %x坐标的描述
  10. ylabel('光伏输出功率/W') %y坐标的描述
复制代码

好吧,是我理解错了~

liujialin0602 发表于 2018-5-14 11:04:44
飞时雨 发表于 2018-5-14 10:54
好吧,是我理解错了~

尴尬,交流频繁被限制回发帖了哈哈。。。
不好意思,可能我之前没有表达好意思,
已验证,就是这个图哈哈:victory:
看来第一句的那个时间定义很重要啊,
谢谢您的耐心指点,学到很多:victory:
:handshake:handshake:handshake谢谢!

大头_oNELE 发表于 2019-3-17 22:05:22

求大神解释图片

本帖最后由 大头_oNELE 于 2019-3-17 22:06 编辑

求大神解释下运行结果
微信截图_20190317220306.png
微信截图_20190317220250.png

Baymax0909 发表于 2021-1-5 21:57:17

大神你好,我想借楼问一句,他这边x的话,我想设置间隔取点,就是比如6:3:22这样子要怎么不会引起plot矢量长度不一样的问题呢?还有我想把这个3改成任意的间隔,定义成一个变量,这个变量是我可以随机输入的值,这样又怎么改呢。写毕业论文被这个问题困扰了好久了,求老哥指点!!!感谢!!!

leaf666666 发表于 2021-10-12 21:31:55
liujialin0602 发表于 2018-5-8 15:14
你好呀,要是不用hours函数怎么修改呢?一时半会儿新版本不好装

clc
clear all
clf
x=0:4;
f=(5-4.*x.^2+2.*x.^4).*exp(-0.3*x.^2);

P0=1;
P1=inline('x','x');
P2=inline('(3.*x.^2-1)/2','x');
P3=inline('(5.*x.^3-3.*x)/2','x');
P4=inline('(35.*x.^4-30.*x.^2+3)/8','x');
PP0=1;
PP1=inline('x.*x','x');
PP2=inline('(3.*x.^2-1)/2.*(3.*x.^2-1)/2','x');
PP3=inline('(5.*x.^3-3.*x)/2.*(5.*x.^3-3.*x)/2','x');
PP4=inline('(35.*x.^4-30.*x.^2+3)/8.*(35.*x.^4-30.*x.^2+3)/8','x');

fp0=inline('1.*(5-4.*x.^2+2.*x.^4).*exp(-0.3*x.^2)','x');
fp1=inline('x.*(5-4.*x.^2+2.*x.^4).*exp(-0.3*x.^2)','x');
fp2=inline('(3.*x.^2-1)/2.*(5-4.*x.^2+2.*x.^4).*exp(-0.3*x.^2)','x');
fp3=inline('(5.*x.^3-3.*x)/2.*(5-4.*x.^2+2.*x.^4).*exp(-0.3*x.^2)','x');
fp4=inline('(35.*x.^4-30.*x.^2+3)/8.*(5-4.*x.^2+2.*x.^4).*exp(-0.3*x.^2)','x');
c0=quad(fp0,0,4)/1;
c1=quad(fp1,0,4)/quad(PP1,0,4);
c2=quad(fp2,0,4)/quad(PP2,0,4);
c3=quad(fp3,0,4)/quad(PP3,0,4);
c4=quad(fp4,0,4)/quad(PP4,0,4);
s=c0.*P0+c1.*P1(x)+c2.*P2(x)+c3.*P3(x)+c4.*P4(x);
y=poly2sym(s)
t=hours(2:1:38)
plot(t,y,'r');
错误使用 plot
数据必须为可转换为双精度值的数值、日期时间、持续时间或数组。

出错 Untitled2 (line 31)
plot(t,y,'r');
你好,我也出现了相同的问题能指导一下么?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表