matlab程序纠错

2024-05-19 05:54

1. matlab程序纠错

把我划红叉的一句话删除就OK了

而且你这个程序明显有问题,即冗余还有错!!
看我写的,把以下代码替换你贴出来的这一大段即可:
A=[rate1990';rate2005';rate2007';rate2008'];
Lb = [1990,2005,2007,2008];
for i = 1:4
    B = A(i,:);
    eval(['rate',num2str(Lb(i)),'test = B(B<=4.6);']);
end
可以解决你的问题。你写的太麻烦了。

matlab程序纠错

2. matlab程序报错如下,该怎么修改? 新人求教!!!

1、题主的matlab是什么版本?sind、cosd是matlab
7.0(r14)引入的函数,用于计算以角度为单位的三角函数,如果是7.0之后的版本,正常情况下不应该报这样的错啊。例如在7.5(2007b)上的报错信息为:
??? error using ==> sind at 16
argument should be real. 
2、可以自行定义这两个函数:
sind=@ (x)sin(sym(pi)/180*x);
cosd=@ (x)cos(sym(pi)/180*x); 但由于solve函数会误把pi也当成变量,导致下面的错误:
??? error using ==> solve at 134
error, (in solve) a constant is invalid as a variable, pi避免这个问题的做法是,明确指定要求解的变量:
s = solve(eq1,eq2,eq3,eq4,eq5,eq6,longi, lati, h1, t1, h2, t2)但求出的结果为空,可能的原因:(1)方程组无解;(2)有解,但solve函数无法求出。
 
3、可以尝试用fsolve求数值解,但需要注意,该函数本质上是把解方程转化为优化问题,求得结果与初值有关。

3. matlab有大神帮我改错吗

你的问题出在,money与num的行数和列数不一致,而导致 money=money-num*A(5+i) 这个命令执行的错误。
因money=1000*ones(n,1)是n行和1列的向量,而num=zeros(1,n)是1行和n列的向量,所以计算 money=money-num*A(5+i)  时错误。
更改方法:将money=1000*ones(n,1)改为money=1000*ones(1,n);或num=zeros(1,n)改为money=1000*ones(n,1),二选一。

matlab有大神帮我改错吗

4. matlab编程运行错误,谁帮我改改啊!

从前面的数据看,m、k、c都是3x3的矩阵,而d、v、a、f都是4行,所以乘法不匹配。
 
不知道你的算法本意应该是什么,仅从能运行的角度来说,试试改一下:(1)给d、v、a赋值的地方,zeros(4,nt)改成zeros(3,nt);(2)for循环里面的第2行,两处给f赋值都把后面去掉一个0,即“...;0;0;0]”改为“...;0;0]”。
 
代码比较长,提这种问题的时候最好把代码文本贴出来,不然,为了回答问题,还要做录入这样的无谓工作。我只是大致读了代码给的建议,不一定可行,仅供参考。

5. matlab里的一个错误 怎么改?

w=0.001:0.1:10;
r=2.325,v1=6,v2=10,v3=14;
a0=0.0606,a1=-0.0255,a2=0.0206,a3=-0.0037,a4=0.00023,a5=-4.6748e-06,a6=-1.7942e-08;
k1=w*r;
m1=(1./k1)-0.035;
b1=1./m1;
Ct=a0+a1*b1+a2*b1+a3*b1+a4*b1+a5*b1+a6*b1; 
P1=0.5.*1.185.*pi.*r.^3.*v1.^2.*w.*Ct;
plot(w,P1);

matlab里的一个错误 怎么改?

6. Matlab程序错误原因是什么

  1
  下述方法描述中,采用如下实例程序进行说明。
  %实例程序
  [xx,yy] = meshgrid(1:20,1:20);
  d = sqrt(xx.^2+yy.^2);
  zz = peaks(10);
  out = d + zz;
  surf(out);shading interp;
  2
  MATLAB程序运行错误后,切换到MATLAB命令行中,观察命令行中的错误信息,确定错误原因

  3
  在错误信息中,查找源程序中错误代码的行数,点击行数链接,可以直接定位错误语句

  4
  错误语句定位后,自动跳转到代码编辑器中,在代码编辑器中通过光标标识错误代码的位置

  5
  确定错误语句后,通过F12快捷键在错误语句处设定断点

  6
  断点设定完成后,通过F5快捷键重新执行程序,程序会在断点处停止运行,进入调试状态

  7
  在调试状态下有多个步骤可以查找程序问题的原因。
  (1)将鼠标放置在变量上方,这时代码编辑器会自动显示变量的类型、维数、各维大小等信息,根据此信息帮助程序员查找程序中变量错误原因。

  8
  在调试状态下有多个步骤可以查找程序问题的原因。
  (2)将问题代码行复制到在MATLAB命令行中执行,重现错误。这样可以反复重新错误,而不中断程序运行,而且不用重新执行程序,提高调试效率。

  9
  在调试状态下有多种方法可以查找程序问题的原因。
  通过whos、size、help等命令协助确定错误原因。其中,whos命令可以查看当前工作区中变量列表,size可以确定某一变量的维数和各维大小,help可以确定某一操作符或函数的帮助信息。

7. matlab报错怎么解决?

这个程序能运行,上面就是运行结果.

matlab报错怎么解决?

8. matlab程序出现了错误,不知道哪里出错了

这段程序里面错误太多,很多地方莫名其妙:
1、原代码第10行的圆括号误为全角,即“D(1)”应为“D(1)”;
2、原代码第16行的圆括号误为方括号,即“F[1]”应为“F(1)”;
3、原代码第12行的C未定义,不知道本意是什么,这里试着将其改为c;
4、原代码第2-3行定义符号变量基本上没有作用(因为代码的第8行和15行分别对变量进行了赋值),删掉。原来定义成符号变量的副作用有两个:
(1)c成了列向量,后面用到c的地方要注意转换;
(2)a、b、c都是符号变量,第18行的计算结果也是符号类型,无法保存到F中。
5、原代码第21行的循环,由于t2长度为10,要保证G的长度和t2相同才能画图,所以把n+10改为10。
 
改后的代码如下(需要说明的是,除前两处错误为语法错误容易判断之外,后面三处错误都属于运行时错误,改动只是尽量猜测错误代码的可能目的是什么,但并不保证和作者的本意相同):
clearA=[2.9 3.6 4.5 5.88 8.1];B=cumsum(A);n=length(A);for i=1:(n-1)    c(i)=(B(i)+B(i+1))/2;endC=c;D=A;D(1)=[];D=D';E=[-C;ones(1,n-1)];c=inv(E*E')*E*D;c=c';a=c(1);b=c(2);F=[];F(1)=A(1);for i=2:(n+10)    F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;endG=[];G(1)=A(1);for i=2:10    G(i)=F(i)-F(i-1);endt1=2008:2012;t2=2008:2017;Gplot(t1,A,'o',t2,G) 
运行结果: