作业帮 > 综合 > 作业

Matlab n=input(''); for x=1:n; y(x)=(5 * x^3 - 3*x - 2)/(-4

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 01:51:12
Matlab n=input(''); for x=1:n; y(x)=(5 * x^3 - 3*x - 2)/(-4 * x^3 + 3*x - 2); end plot(1:n,y)
比如第一次给n为10,图像能出来,第二次给的值小于10,就报Vectors must be the same lengths,为什么?如果在for前面加上y = zeros(1,n);就没有问题,为什么?
因为在你的两次运行之间没有清除变量 当第一次运行后 工作空间里就保存了这个长度的y,第二次你给的长度小于第一次的话,你看 第一次给10,运行完,工作空间里 y是一个1行10列的矩阵,第二次运行 你给5 那么n=5,但是y只有第一个到第五个值是你第二次运行算的,它里面还有第六个到第十个值,1:n的长度是5,y的长度是10,因此在plot作图的时候报错,说矩阵维数一定要相等(即实际上你的并不相等)
加y=zeros(1:n)的话,即每次运行的时候都重新初始化了一个与n长度相同的y,这样算出来的y最后长度也跟1:n长度一致
一般来讲,编程序要养成一个比较好的习惯,在普通的命令文件开头打clear语句,先清除一下变量空间.另外,类似于这种情况下,最好在每次出现矩阵类型的新变量时,要先初始化一下,告诉电脑你的矩阵维数,让电脑预先分配好地址空间,高版本的matlab会提示你这样做,不这样做的话,也不会报错,但是在你的程序很大的时候,这么做有些耗内存.