61阅读

常见语法错误-Matlab常见语法错误

发布时间:2018-04-29 所属栏目:http常见错误代码

一 : Matlab常见语法错误

Subscript indices musteither be real positive integers or logicals

中文解释:下标索引必须是正整数类型或者逻辑类型

出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从1 开始,这与 C 等编程语言的习惯不一样。

解决办法:自己调试一下程序,把下标为0 或者负数的地方修正。关于矩阵的各种访问方式。

举例:
【错误代码】:

1. for s = 0:0.2:2

2. a(s) = 4 * s - 1;

3. end

复制代码

【正确代码】:

1.

2. for s = 1:10

3. a(s) = 4 * s - 1;

4. end

复制代码


当然,这样的赋值使用循环是低效的,因此不提倡


Undefined function or variable"a"

中文解释:函数或变量a 没有定义

出错原因及解决办法:

1. 如果 a是变量,则参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6 后半部分
2. 如果 a是函数,则这是因为matlab在所有已添加的路径中都无法找到该函数对应的m文件而导致的,对此,把该m文件移动到当前路径下再运行便可。(注:何谓“所有已添加的路径”——在命令窗口中输入pathtool 可以查看;何谓“当前路径”——在命令窗口中输入 pwd 可以查看)

举例:
myPlus.m:

1. function d = myPlus(a,b)

2. d = a + b;

复制代码

【错误调用】:
命令窗口:

1. >> z = myPlus(a,b)

复制代码

【正确调用】:
命令窗口:

1. >> x = 2;

2. >> y = 5;

3. >> z = myPlus(x,y)

复制代码


Input argument "x" isundefined



中文解释:输入变量x 没有定义

出错原因及解决方法:参见 [原创]写给学习 matlab 的新手们 一贴中技巧 6

举例:

1. function y = myTest(x)

2. y = x * 2;

复制代码

【错误调用】:
直接在m文件编辑窗口运行程序,或者命令窗口:

1. >>a = myTest;

复制代码

【正确调用】:

1. >>b = 4;

2. >>a = myText(b);

复制代码


Matrix dimensions must agree
Inner matrix dimensions must agree


中文解释:矩阵的维数必须一致

出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算,对此可以参阅:[原创]写给学习matlab 的新手们 一贴中技巧 1

解决办法:自己调试一下程序,保证运算符两边的运算对象维数一致

举例:
【错误代码】:

1. b = [1,2];

2. a = [-1,1];

3. c = a*b;

复制代码

【正确代码】:

1.

2. b = [1,2];

3. a = [-1,1];

4. c = a.*b;

复制代码


Attempt to execute SCRIPT conv as afunction



出错原因及解决办法:参见[原创]写给学习 matlab的新手们一贴中技巧2

如果经过上述检测后仍然出现错误,则请把m 文件的路径设置为常规的试试,即不使用中文的路径、不使用数字作为m文件名的开头等等


Function definitions are notpermitted at the prompt or in scripts



中文解释:不能在命令窗口或者脚本文件中定义函数

出错原因:一旦在命令窗口写function c = myPlus(a,b),此错误就会出现,因为函数只能定义在m 文件中。关于脚本文件和 m 文件的区别请查阅matlab基础书。简言之:
1) 如果你写成 function 的形式,那么必须写在 m 文件中,且以 function 开头(即 function 语句前不能包含其他语句,所有语句必须放在 function 中,当然,function 的定义可以有多个,各 function 之间是并列关系,不能嵌套);
2) 如果你写成脚本的形式,则既可以写在命令窗口中,也可以写在 m文件中,但两者均不能包含 function 语句(即不能进行函数的定义)

解决办法:新建1个m文件,然后再进行函数的定义


1. X must have one or twocolumns

2. Vectors must be the samelengths



中文解释:
1.X 必须是 1 或者 2 列
2. 向量长度必须一致

出错原因:
1. 实际输入不满足该条件。至于如何判断矩阵的行、列,请参阅高等代数或者 matlab 的基础书籍
2. 输入的2个(或几个)变量长度不满足该条件。例如 plot 函数的前2个输入变量,如果1个是1*2,另1个是1*3,则会出错

解决方法:都需要自己调试一下
1. 把 X 的维数改为1 或者 2 列
2. 按照函数的语法要求把向量的长度设置为一样

举例:
【错误代码】:

1. a = [-1,-2,-3];

2. b = [1,2];

3. plot(a,b);

复制代码

【正确代码】:

1.

2. a = [-1,-2];

3. b = [1,2];

4. plot(a,b);

复制代码


One or more output arguments notassigned during call to '...'



中文解释:在调用...函数过程中,1个或多个输出变量没有被赋值

出错原因:函数如果带有输出变量,则每个输出在返回之际都必须被赋值。容易出现这个错误的2个地方是:
1) 在部分条件判断语句(如 if )中没有考虑到输出变量的返回值。例子:多输入多输出报错
2) 在循环迭代过程中部分变量的维数发生了变化。例子:请几位版主看看这个程序什么错误



解决办法:调试程序,仔细查看函数返回时各输出变量的值。更好的方法是:在条件判断或者执行循环之前对所使用的变量赋初值


??? Error using ==>mpower
Matrix must be square



中文解释:错误使用mpwoer函数,要求矩阵必须是方阵

错误原因:在使用向量乘法运算之际,没有用点乘。

解决办法:在涉及向量乘法的语句中用.*代替*,更多的请参考本帖5 楼的描述


Explicit integral could not befound.



中文解释:显式解没有找到

出错原因:并非每个函数的积分都有显式解,这是由于原函数没有解析结果而给出的警告

解决办法:改用数值积分(quad、quadl等)就可以


Index exceeds matrixdimensions.
Attempted to access b(3,2); index out of bounds becausesize(b)=[2,2].

中文解释索引超出矩阵的范围

出错原因:在引用矩阵元素之际,索引值超出矩阵应有的范围

解决办法:检查所定义数组的维数,和引用的范围。

举例:
【错误代码】:

1. b = zeros(2,2);

2. a = b(3,2);

复制代码

【正确代码】:

1.

2. b = zeros(2,2);

3. a = b(1,2);

复制代码


In anassignmentA(I) = B, the numberof elements in B and I must be the same


中文解释:在赋值语句A(I) = B 中,B 和 I 的元素个数必须相同

出错原因:I 和B的维数、大小不一样。这正如“把5 个水果放到 6 个篮子”、或者“把6 个水果放到 5 个篮子”,均无法实现

解决办法:自己设置断点调试一下,看看 I 和 B 的维数、大小是否相同,不同的话就要修改成两者一致

举例:
【错误代码】:

1. b = [1,2];

2. s(1) = b;

复制代码

【正确代码】:

1.

2. b = [1,2];

3. for i = 1:2

4. s(i) = b(i);

5. end

复制代码

当然,这样的赋值使用循环是低效的,因此不提倡


To RESHAPE the number of elementsmust not change



中文解释:矩阵变换时,变换前和变换后的总元素不能改变

出错原因:变换时语句使用不恰当。例如,变换前是[2,3] 的六个元素的矩阵,变换后可以是[3,2]、[1,6]的6元素矩阵,但不能是[2,4]的8元素矩阵

解决办法:自己设置断点调试一下,看看变换前后的矩阵大小是否相同,不同的话就要修改成两者一致

举例:(出错原因中已提及)


[原创]写给学习 matlab的新手们

本人接触matlab已经有5年多的时间了,一直想写点东西,但是之前不知道放在哪里才能发挥它的最大作用,直到几天前碰上了这个论坛(有点像诸葛亮遇见姜维,哈哈)。

废话不说,我想借贵论坛宝地,写一些经验给使用matlab的新手们,当然了,老大们也可以看看,不嫌弃我写得粗糙的话还可以指点一下,先谢过了~~~~

首先我想说的是,matlab跟其他语言不一样(我用的比较多的编程语言,除了matlab就应该是c或c++了,VB和Delphi也接触过,我想版面(matlab版)大部分人也差不多),如果你抱着“把其他语言的思想运用在matlab里面”的话,那么我想,即使程序运行不出错,也很难把握matlab的精髓,也就很难发挥matlab的作用了。所以,如果你是希望掌握一门语言、1个工具,使它更有效为你服务的话,那么,希望本文对你有所帮助,请精读;如果你是希望matlab作为VC的附属品,即你不想在matlab上面花太多功夫,只纯粹想用matlab来完成VC做不了或很难做成的任务的话,那么,本文你也应该至少浏览一下。

浏览

Matlab是1个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用之际(就是在编程之际),许多人(特别是初学者)往往没有注意到这个问题,因此,for循环(包括while循环)满天飞…………..这不仅是暴殄天物(没有发挥matlab所长),还浪费了你宝贵的时间。对此,版友MVH在他的“MATLAB 小技巧”一文中也有所涉及,雷同的东西我也就不重复了,matlab的“帮助”里面也有相关的指示。我这里想说的一点是,初学者往往在初始化矩阵之际注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++的思想。举个例子吧,下面的代码是我的1个师弟写的,我想他接触matlab也有2、3年时间了(在此说明一下,接触2、3年并不是表示每天都会跟matlab打交道,我本人也不是,只是在一年某几个时间段里面连续使用),但是仍然会出现类似的问题:

J = 0;
lt = size(imf1,2);
for (i = 1:lt)
if (abs(imf1(i)) >1)
J = 1;
break
end
end

上面的代码实现了1个目的――检查信号imf1(1个向量)是否存在绝对值大于1的点,这显然是基于C++的思想写出来的。如果在matlab下面,其实用2个语句就足够了(当然,可以合并为1个):

q = find(imf1>1);
J = ~isempty(q);

这样的修改带来的好处是很可观的。

又如:

for j = 1:num
imf1(start1+j) = 2*li1(j+1) -imf1(start1+j);
end

这是1个对称翻折的问题,它完全可以用以下这个语句简洁表示:
imf1(start1+1:start1+num) = 2*li1(2:num+1) -imf1(start1+1:start1+num);

因此,如果是新手,可以先用循环(基于C++的思想)来编写代码,然后看看能否用matlab的语言(基于矩阵的思想)来改进。当然,这样做的前提是你对matlab提供的一些函数比较熟悉才行,这些函数在matlab的“帮助”那里搜索“FunctionsUsed inVectorizing”即可找到一些,其他的也可以找相关的书籍(没找到?不可能,电子版总可以下载到的)



对提高matlab编程能力的方法,我想主要有以下3个:
1. 查help
如何查?抽丝剥茧法,具体请看此贴2楼:matlab画的三维图的怎么使x轴的label标注平行于x轴

2. 多上上论坛,搜索帖子、发帖子提问

3. 阅读别人、特别是牛人的程序

当然了,正如所有的程序语言一样,“3分课本7分上机”,一定要动手才行,不能光看。多想、多思考、多尝试,才是正路。

以下技巧就是平日动手编程、阅读别人的帖子后整理出来的(不断添加中):

·1. matlab的运算是基于矩阵的,但是也提供了对应元素的运算,即在运算符前面加上“点”。例如:
>> a = [1,2;3,4]

a =

12
34

>> b = [-1,-2;-3,0]

b =

-1 -2
-30

>> a * b

ans =

-7 -2
-15 -6

>> a .* b

ans =

-1 -4
-90

也就是说,没有加“点”的运算是对整个矩阵而言的,称为矩阵运算(整体运算),而加了“点”的运算是对每个元素而言的,称为点运算(局部运算)。另外,一般情况下,matlab作点运算(理解为左右2个对象(矩阵)的对应元素参与该运算)时,2个矩阵的维数和长度都要求是同大小的,且此时要在运算法前面添加“点”,但是在某些情况下该“点”可以省略,例如1个标量a和1个向量b(或者矩阵)相加、相减、相乘、b/a时都可以不需要加点,表示b中每个元素都和a进行运算(即点运算的效果)

·2.强烈建议大家在命名自己的函数名(更加准确应该说m文件名)时,在名称前面加上 my 等个人专用标识,即假如你要把你的函数命名为conv,则最好写成 myConv,否则容易与matlab自带的函数(m文件)名字重复而导致“Attempt to execute SCRIPT conv as afunction”的错误!当你碰到这个错误时,可以在命令窗口中输入which conv all来看看到底有否重复命名了该函数,有的话,建议把自己命名的文件改名,保留matlab自带的文件。此外,命名文件名时,必须符合标识符的规范,即不能以数字开头等等,否则会出现莫名其妙的错误!

·3.在条件判断中,y==0, a-b==0这类语句应该尽量避免使用,除非你可以保证y、a、b在整个计算过程中是整数,否则2个浮点数相减、或者1个浮点数不可能完全等于0。因此,对浮点数进行条件判断时,最好采用 abs(a-b) <= 1e-005这种方式来进行等值比较

·4.循环变量递减时必须显式给出步长,即i = 5:-1:-5(假设步长为-1),如果递增时且步长为1,则可以省略,简写作 i =-5:5

·5.在引号环境下的语句中,如果需要使用单引号,则要写成2个单引号的形式,不能用1个双引号代替!例如:...'callback','[imp,Fs,bits]=wavread(''temp.wav'');'文件名temp.wav外面的是2个单引号

·6. 如果你编写的函数带有输入参数(例如 x),则跟其他语言一样,这只是形式参数,所以不能通过直接运行该函数(或者m文件)来测试,这样会出现 ??? Input argument "x" isundefined. 的错误。一定要从其他地方(如命令窗口或者其他函数对其调用)来传递真实值,此时 x 才是实际参数。如果你有C语言的编程经验,命令窗口就相当于main函数;如果没有,以下是举例:

myPlus.m:

此外,和每1种编程语言一样,所有定义的变量都有一定的作用域。虽然matlab宣称变量不需要定义就可以以直接使用,但是,事实上任何编程语言的变量都需要先定义才能使用,所以matlab也不例外(看来真的是“ matlab宣称变量不需要定义”惹的祸),只不过所不同的是并非使用int x 这种方式来定义,而是使用1个简单的赋值语句包含定义+初始化。因此,如果直接使用未定义的变量(最常用的是在“=”右边首次出现),则会出现“Undefined function orvariable” 的错误!例如:

则运行时matlab会报错:Undefined function or variablet!此时当实际参数传递给输入变量x 后, x、z 就被定义了,但是 t却没有。

因此,强烈建议在使用变量之前(特别是循环中使用数组),先预分配空间,这样容易减少很多莫名其妙的错误,具体做法参见以下图片:

·7. 如何调试程序:编好程序(先保证代码没有语法错误),设置断点(m文件编辑窗口中菜单 Debug 有 Set/Clear breakpoint),运行程序(菜单 Debug 有 Run 或 Save &Run),此时 matlab会停在断点处,各变量的值可以通过鼠标停留在变量名上观察到,或者在命令窗口中敲入变量名后得到

·8. 对于matlab自带函数(命令)的问题,请多利用matlab的帮助功能。即在命令窗口中输入: help eval 或者 doceval。更多的帮助指令请参阅以下链接的帖子:[转帖]MATLAB中的帮助指令

·9. 对于 mat文件的读取,由于存放的是结构体数组,因此调用 A =load('*.mat') 后,得到的 A 并非原始数据,而是1个结构体,此时需要使用".域名" 才能正确得到数据,例如:

后得到:

A =
Signal:[85x7794x64 single]
TargetChar: [1x85 char]
Flashing:[85x7794 single]
StimulusCode: [85x7794single]
StimulusType: [85x7794single]

则用:

·此外,不建议使用load *; 这种方式读取mat文件(读取dat等其他格式的文件也是类似),因为此时读取后的变量名是存储时设定的,假若文件并非您本人存储,则无法获悉这个变量名,通过这种方式是无法在读取时候指定数据存放在哪个变量中的,这样将会导致下文不知道使用哪个变量名,甚至会导致出错!因此,强烈建议采用A = load('*.mat');方式进行读取,当然了,如果文件是您本人存储的,则用前面的方式比较简便,这另当别论。下面以 dat 文件作为例子说明:
clear all
>> a = magic(4);b =ones(2, 4) * -5.7;c = [8 6 42];
>> save -ascii 1_data.dat
>> load 1_data.dat

因为这种方式的读取是把数据默认存放在以“不含后缀的文件名”命名的变量中(这里为 1_data),但是由于 1_data 不是合法的标识符,因此 matlab 自动改成 X1_data(不同版本的matlab可能不同),即读取出来的数据事实上是存放在 X1_data 变量中。如果使用 m 文件方式编程(即 load 1_data.dat后有分号),则这个变量名根本不会显示出来,也就是说,对它的改名你是毫不知情的,这时候下文继续使用 1_data 的话,就会产生错误。

·10. matlab 对中文的文件路径(不光是文件名)不太支持,特别是6.5 版本。

·11. 函数不能在命令窗口中定义,只能在 m文件中定义。否则出现: ???Error: Function definitions are notpermitted at the prompt or in scripts. 的错误!

最后,整理一下常用的快捷键(用【】表示)或命令:

1. 在命令窗口(CommandWindow)中:
1) 【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令
2)clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉
3) clear――这个才是清空当前工作区的变量命令,常用语句clear all来完成
4) 【Tab】键――(转自版友心灯)在matlab@hit.edu.cn看到的:在command窗口,输入1个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,即可自动完成。目前讨论结果是:matlab6.5版本中,如果候选命令超过100个,则不显示。而在matlab7以后版本中,则没有这个限制,均可正常提示
5) 【Ctrl+C】(或【Ctrl+Break】)――(转自版友yangjin_ren)在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行,呵呵。
2. 在编辑器(Editor)中:
1) 【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)
2) 【Ctrl+[】--减少缩进(对多行有效)
3) 【Ctrl+I】--自动缩进(即自动排版,对多行有效)
4) 【Ctrl+R】――注释(对多行有效)
5) 【Ctrl+T】――去掉注释(对多行有效)
6) 【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0以上无效,matlab把这项功能自动集成到编辑器里面了,即在m文件编辑窗口中会自动进行括号配对检查,并在窗口右侧有红橙绿三灯提示,具体请参考以下帖子:)
7) 【F12】――(www.61k.com]设置或取消断点
8) 【F5】――运行程序
其余的例如在Debug状态下的快捷键就不多说了,自己看菜单Debug吧


累了, 有时间再写吧。希望大家多交流~~~~~~

Coming: (以下东西都是一年前做的了,不知道能否记起,呵呵)——已经全部完成
1) 关于神经网络的――调用matlab的nntool命令后的使用问题(我做之际没有看过其他书籍或资料,是自己闭门造车的结果,如果写之前发现其他书籍有相关介绍的话就不写了)
2) 关于外部接口的――matlab与C++Builder的接口,想详细介绍如何利用matcom 4.5在C++Builder中调用matlab的代码以及matcom的一些技巧。由于我不是搞项目开发的(搞科研、搞课题的),所以对VC不熟悉,大学之际学过一点,不过我想对于搞科研来说C++Builder就足够了,免去很多麻烦,Builder在界面设计和数据库连接上面(我只接触过这两方面)还是做得不错的。同样,如果发现其他书籍上有类似的东西就不写了
3) GUI方面也写写吧,只是一点点心得或者体会,呵呵,这个相对简单些,篇幅相对要少些。


matlab程序报错意思释疑

1.Subscript indices must either be real positive integersor logicals

中文解释:下标索引必须是正整数类型或者逻辑类型

出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从0 开始,要么出现了负数。注:matlab的语法规定矩阵的索引从1 开始,这与 C 等编程语言的习惯不一样。

解决办法:自己调试一下程序,把下标为0 或者负数的地方修正。

2.Undefined function or variable "a"

中文解释:函数或变量a 没有定义

3.Input argument "x" is undefined

中文解释:输入变量x 没有定义

4.Matrix dimensions must agree
Inner matrix dimensions mustagree

中文解释:矩阵的维数必须一致

出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab通过“.”来区分矩阵运算和元素运算

5.Function definitions are not permitted at the prompt orin scripts

中文解释:不能在命令窗口或者脚本文件中定义函数

出错原因:一旦在命令窗口写function c = myPlus(a,b),此错误就会出现,因为函数只能定义在m 文件中

6. 1X must have one or two columns
2.
Vectors must be the samelengths

中文解释:
1. X
必须是 1 或者 2
2.
向量长度必须一致

7.One or more output arguments not assigned during call to'...'

中文解释:在调用...函数过程中,1个或多个输出变量没有被赋值

8.??? Error using ==>mpower
Matrix must be square


中文解释:错误使用mpwoer函数,要求矩阵必须是方阵

9.Explicit integral could not befound.

中文解释:显式解没有找到

10.Index exceeds matrix dimensions.
Attempted to access b(3,2); index out of bounds becausesize(b)=[2,2].

中文解释:索引超出矩阵的范围

附本人遇到的问题:Attempted to access x(3); index out of bounds becausenumel(x)=2.

表示x矩阵元素不够,导致x(3)无法索引。

11.In an assignmentA(I) = B, the number of elements in B and I must be thesame



中文解释:在赋值语句A(I) = B 中,B 和 I 的元素个数必须相同

12.To RESHAPE the number of elements must notchange

中文解释:矩阵变换时,变换前和变换后的总元素不能改变

二 : 六种常见早餐错误吃法 影响孩子健康

不吃早餐对孩子身体的危害,已经被越来越多的人所认识到。(www.61k.com)早餐一定要吃,但同时也要注意该怎么吃,不该怎么吃。不恰当的早餐饮食习惯,同样会损害你的健康,带走你的快乐。有几种相当受欢迎的常见早餐吃法,您要记住:不能这样吃!

吃法一:让宝宝吃速食早餐

早餐内容:各种西式快餐

受欢迎原因:西式快餐如汉堡包、油炸鸡翅等,一向是时尚人群的饮食偏好,很多妈妈们也喜欢给宝宝吃这些东西。而且现在不少快餐店也提供专门的早餐,如汉堡包加咖啡或牛奶、红茶,方便快捷而且味道也不错,但小宝宝吃这些东西并不有利健康。

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

专家评点:这种高热量的早餐容易导致肥胖,油炸食品长期使用也会对身体有危害。用西式快餐当早餐,午餐和晚餐必须食用低热量的食物。另外,这种西式早餐存在营养不均衡的问题,热量比较高,但却往往缺乏维生素、矿物质、纤维素等营养。

建议:选择西式快餐做早餐,应该再加上水果或蔬菜汤等,以维持营养均衡,保证各种营养素的摄入。另外最好不要长期食用。

吃法二:给宝宝吃“回味早餐”

早餐内容:剩饭菜,或剩饭菜炒饭、剩饭菜煮面条等等

受欢迎原因:不少家庭的“妈妈”都会在做晚饭时多做一些,第二天早上给孩子和家人做炒饭,或者把剩下的饭菜热一下。这样的早餐制作方便,内容丰富,基本与正餐无异,通常被认为营养全面。

专家评点:剩饭菜隔夜后,蔬菜可能产生亚硝酸(一种致癌物质),吃进去会对人体健康产生危害。

建议:吃剩的蔬菜尽量别再吃;把剩余的其他食物做早餐,一定要保存好,以免变质;从冰箱里拿出来的食物要加热透。

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

吃法三:零食早餐

早餐内容:各种零食,如雪饼、饼干、巧克力等。[www.61k.com]

受欢迎原因:很多家长都在家里放一些零食储备,以备不时之需。而早上起来后,时间不是很充裕,就往往顺手拿起零食当做宝宝的早餐了,方便快捷。

专家评点:宝宝平时肚子饿了吃点饼干、巧克力等零食是可以的,但是用零食充当每天三餐中最重要的早餐,那就是非常不科学的了。零食多数属于干食,对于早晨处于半脱水状态的人体来说,是不利于消化吸收的。而且饼干等零食主要原料是谷物,虽然能在短时间内提供能量,但很快会使孩子体再次感到饥饿, 临近中午时血糖水平会明显下降,早餐吃零食容易导致营养不足,导致体质下降,容易引起各种疾病入侵。

建议:不宜以零食代替早餐,尤其不要吃太多的干食,早餐食物中应该含有足够的水分。如果当天的早餐太干可以加上一根黄瓜。

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

吃法四:“传统风味”早餐

早餐内容:油条、豆浆

受欢迎原因:很多孩子都是从小就在爷爷奶奶的带领下,习惯了早上吃油条加豆浆的,不但口味上习惯了这种吃法,而且感情上也有多年的“积蓄”。[www.61k.com]

专家评点:油条是高温油炸食品,跟烧饼、煎饺等一样都有油脂偏高的问题。食物经过高温油炸之后,营养素会被破坏,还会产生致癌物质;而且油条的热量也比较高,油脂也难消化,再加上豆浆也属于中脂性食品,这种早餐组合的油脂量明显超标,不宜长期使用。

建议:早餐一定要有蔬菜或者水果,豆浆加油条的吃法最好少吃,一星期不宜给宝宝吃超过一次,而且当天的午、晚餐必须尽量清淡,不要再吃炸、煎、炒的食物,并多补充蔬菜。

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

吃法五:运动型早餐

早餐内容:路边购买的早餐,边走边吃,手动,脚动,嘴动,全身运动……

受欢迎原因:上班一族的早晨都是在匆忙中度过的,很多家长送宝宝上幼儿园或者上学时,早餐往往都在路上解决。[www.61k.com]小区门口、公交车站附近卖的包子、茶蛋、肉夹馍、煎饼果子等食品,是他们的第一选择,买上一份,就边走边吃……

专家评点:边走边吃对大人孩子的肠胃健康不利,不利于消化和吸收;另外,街头食品往往存在卫生隐患,有可能病从口入。

建议:如果选择街边摊食品做早餐,一是要注意卫生,二是最好买回家或者到单位吃。尽量不要在上班路上吃早餐,以免损害健康。

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

常见早餐食品 六种常见早餐错误吃法 影响孩子健康

吃法六:“营养”早餐

早餐内容:水果、蔬菜、牛奶等营养食物,就是缺了“营养价值不高”的主食。[www.61k.com)

受欢迎原因:这类早餐很受欢迎,因为主食是热量的主要来源,现在的父母都希望宝宝健康,并不一定要胖乎乎……所以,各种高营养的食物都要吃,而热量则要减少。

专家点评:很多家长都错误的认为主食仅仅提供热量,跟营养挂不上钩,其实碳水化合物也属于营养的范围,而且对人体极为重要,因为没有足够的热量 供给,人体就会自动分解释放热量,长期不吃主食,会造成营养不良,并导致身体各种功能的削弱。另外,酸奶和西红柿、香蕉、雪花梨、李子、杏等口味上呈酸性 的水果和粗纤维的水果,都不宜空腹食用。

建议:应该增加面包、馒头等主食,这类谷类食物可以使宝宝得到足够的碳水化合物,还有利于牛奶的吸收。

三 : Android常见错误

1、Unable to resolve target 'android-2'

安装低版本的api,再default.properties 这个文件中把target=android-2 改成 target=android-7终于就没有问题了。[www.61k.com)

2、Invalid start tag LinearLayout

main.xml放错文件夹了,应该在\res\layout下。

3、INSTALL_FAILED_INSUFFICIENT_STORAGE

原因:SD卡内存容量不够

法一:在下图的“Additional Emulator Command Line Options”中加上“-partition-size 128”

法二:启动模拟器,然后进入菜单

settings->applications->mange applications-> select the application->select "unistall".

这样就能彻底删除了,然后再重新安装这个apk就没问题了

4、No Space left on device

清除C:\Users\Lanyan\AppData\Local\Temp\AndroidEmulator文件夹下的tmp文件

参考资料:

5、Could not open the editor: Resource is out of sync with the file system

当右击default.properties打开时,出现下图错误:

解决方法:右击工程,Refresh一下就好了。

原因:Usually happens when some files are edited outside of eclipse。

6、Invalid project description

网上的解决方法是:在项目根目录下的.project文件中,找到<name>cms6.0</name> 将cms6.0改为和项目目录名称一致。

解决方法:我已经将该工程导入Eclipse,一个工程不能重复导入两次;或者把你的文件夹考的别的目录下然后重新导入即可。

原因:有两份相同的AndroidManifest.xml的描述性文件。

7、java.lang.SecurityException: Requires VIBRATE permission

解决方法:在AndroidManifest.xml中加上一句

“<uses-permission android:name="android.permission.VIBRATE"></uses-permission>”

原因:权限问题导致,因为使用了震动功能。

8、Activity not started, its current task has been brought to the front

解决方法:在Eclipse中,“project”-->“clean…”

原因:模拟器中还有东西在运行,也就是你要运行的activity已经有一个在模拟器中运行了不要以为你的模拟器退出到桌面了就没有东西在跑了。在你调试的时候异常关闭的程序有可能就有activity在运行。

9、ArrayAdapter requires the resource ID to be a TextView

问题描述:java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView而

adapt = new ArrayAdapter <String>(this, R.layout.main, infoList);

这句中布局main中的布局可能不是TextView对象。

adapt = new ArrayAdapter <String>(A1, A2, A3);

参数A2是一个“resource ID to be a TextView 

解决方法:A2改为:android.R.layout.simple_spinner_dropdown_item

10、R.java文件突然不见了

解决方法:右键项目-->Build Project

原因:res/drawable下的文件名只能是在a~z、0~9之间字符组成。

10、ScrollView can host only one direct child。

解决方法:需要把所有的子元素放到一个LinearLayout内部或RelativeLayout等其他布局方式。

原因:主要是ScrollView内部只能有一个子元素,即不能并列两个子元素。

11、emulator: ERROR: the user data image is used by another emulator. aborting

没有正常关闭导致的,删除android-sdk-windows\.android\avd\对于版本\下的以.lock结尾的文件夹就行。

原因:.lock是加锁,如果程序崩溃等原因导致无法清除这些以.lock结尾的文件夹,就会出现这个问题,也就是这个avd的锁没有被释放,导致avd manager以为这个avd正在使用当中。

12、* daemon not running. starting it now *

ADB server didn't ACK

* failed to start daemon *

已经确认adb.exe的路径没有问题,重启了两次模拟器和eclipse还是不行,上网查了下资料~

解决办法:

(1)查看任务管理器,关闭所有adb.exe;(2)重启eclipse即可

13、android.content.res.resources notfoundexception

在Manifest.xml中加上:<uses-sdk android:minSdkVersion="5"/>,或者将5改成6,其他值也一样加1

14、Unable to instantiate activity ComponentInfo

解决方案:更改activity android:name="Acitivity"为activity android:name=".Acitivity"

原因:AndroidManifest.xml配置activity的路径时出错了

15、工程名上有红色感叹号

解决方案:右键项目名称BuildPath--->ConfigureBuildPaht...中,然后上面有几个选项卡找到Libraries中出现红色叉号的包为路径错误的包。到classpath中修改相应包的当前路径。然后回到eclipse中F5刷新工程。

问题原因:工程中classpath中指向的包路径错误。

解释:用myeclipse新建web工程,在工程目录下会生成一个.classpath配置文件,里面是你工程里面引用的jar的配置。这个.classpath对你的web工程没有什么影响,其实是给myeclipse识别的。你说的这种情况是因为.classpath文件里面配置引用了某个jar,但是实际上你的lib里面并没有这个jar所以才会有红色的提示。你不用拿.classpath文件和你的jar一个个去找,你现在打开MyEclipse右键单击你的web工程,找到BuildPath-->ConfigureBuildPaht...-->然后上面有几个选项卡找到Libraries。这里看到的就是你工程里面引用的所有的jar,看看是不是在某个jar图标上有个很小的黄色的感叹号?如果有的话就没错了,先选中这个jar,点击右边的Remove-->点击OK等待几秒,现在web工程上面的红色XX是不是没有了,哈哈。解释一下:黄色的感叹号的jar,表示.classpath配置文件引用了jar,但是实际上lib里面没有这个jar。

扩展:android常见面试题 / android常见加密方式 / android开发常见问题

16、使用Intent时出现另一个活动未发现的异常(ActivityNotFoundException)

解决方案:在AndroidManifest.xml中再加一个<activity android:name=".Filelist" android:label="@string/app_name" />

17、Fail to connect to camera service

在AndroidManifest.xml中添加<uses-permission android:name="android.permission.CAMERA" />

如果还是不行

@Override

       public void surfaceDestroyed(SurfaceHolder holder) {

               // TODO Auto-generated method stub

               mCamera.stopPreview();

              mCamera.release();//加上这句,就OK!

               mCamera=null;

       }

18、android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

解决方法:将new AlertDialog.Builder(Context context)中的参数用Activity.this(Activity是你的Activity的名称)来填充就可以正确的创建一个Dialog了。

导致报这个错是在于new AlertDialog.Builder(mcontext),虽然这里的参数是AlertDialog.Builder(Context context)但我们不能使用getApplicationContext()获得的Context,而必须使用Activity,因为只有一个Activity才能添加一个窗体。

19、java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

在任务管理器中终止adb服务,关闭手机调试或者模拟器,重启就好了。

20、java.lang.IllegalStateException: Circular dependencies cannot exist in RelativeLayout

两个表示位置的属性不能同时使用,但是有些一起用又没有报异常,不太了解。

如android:layout_alignParentTop="true" android:layout_centerHorizontal="true"

21、No resource found that matches the given name

在相对布局中,若是用到android:layout_above属性,并且其后id之前没有出现过,那么需要这样写:android:layout_above="@+id/vidAdd_ButtonGroup",多加一个“+”。

22、@Override错误

Window->Preferences->Java->Compiler.

把Compiler compliance level的级别改成1.6,每个工程属性里只要默认设置就行了,不要设置specific.

23、PANIC: Could not open: C:\Users\Lanyan\.android/avd/SDK2.2.ini

添加android_sdk_home系统变量,其值为想要保存avd的目录,例如我放在D:\Program Files\android\avd下。

24、Activity has leaked window that was originally added

原因1:重写onKeyDown时,return super. onKeyDown(int keyCode, KeyEvent event)没有修改;

原因2:关闭Activity时,没有关闭AlertDialog造成的。

法一:将return super. onKeyDown(int keyCode, KeyEvent event)改为return false;

法二:@Override

protected void onPause()

{

   super.onPause();

      //关闭对话框

   AlertDialog.dismiss();

}

法三:AndroidManifest.xml中,在相应的<Activity>节点中添加

android:configChanges="orientation|keyboardHidden|navigation"

25、unable to instantiate application

解决方法1:在AndroidManifest.xml中的application里的android:name要去掉;

解决方法2:全局类或者变量私有;

解决方法3:package路径错误。

26、IllegalArgumentException 'Provider "gps" unknown"

locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);触发不了LocationManager

加入以下一段参数就好了:

mLocationManager.addTestProvider(LocationManager.GPS_PROVIDER,

"requiresNetwork" == "", "requiresSatellite" == "", "requiresCell" == "", "hasMonetaryCost" == "",

"supportsAltitude" == "", "supportsSpeed" == "",

"supportsBearing" == "", android.location.Criteria.POWER_LOW,

android.location.Criteria.ACCURACY_FINE);

参考:

扩展:android常见面试题 / android常见加密方式 / android开发常见问题

四 : ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决

ubuntu常见错误--Could not get lock /var/lib/dpkg/lock解决

通过终端安装程序sudo apt-get install xxx时出错:

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it

出现这个问题可能是有另外一个程序正在运行,导致资源被锁不可用。而导致资源被锁的原因可能是上次运行安装或更新时没有正常完成,进而出现此状况,解决的办法其实很简单:

在终端中敲入以下两句

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock

五 : 青少年仰泳手臂技术及常见错误纠正方法

一、 仰泳手臂技术

仰泳的手臂动作分为几个重要的部分(www.61k.com],入水、抱水、划水、出水和空中移臂。
1、 入水
手的入水点应在肩部延长线和肩部延长线与中线之间,过宽会缩短划水路线的距离,降低划水效果;过窄容易使身体左右摇摆,增大前进的阻力。入水顺序应以小拇指领先,掌心向外,类似切西瓜一样切如水中,手掌与小臂形成150°一160°的夹角,手臂应伸直并且肘关节不能弯曲,手同时向前、下、外三个方向运动,并不产生推进力,主要是为抱水做好准备。
2、 抱水
手臂入水后应积极下滑抓水,转入抱水阶段。如果手臂一入水就马上划水,手划水就会很浅,产生气泡而划空,这个动作有很多学员都存在,但其中大部分是因为滚肩技术掌握不熟练造成的。抱水技术的要求是首先身体围绕纵轴转动和积极伸肩,手臂向外旋转、屈腕,使手臂准确对水并有压水的感觉,并使划水的肌肉群如肩带肌肉群、胸大肌和背阔肌得到适当的拉长,以便划水时能充分发挥力量。
3、 划水
划水技术是全部手臂动作中推动身体前进的主要动力,可分为两个部分,先是拉水后是推水。
拉水是在抱水的基础上进行的,随着身体绕纵轴继续转动,肘关节下降,手在向后划水的同时向上移动,使屈肘的程度逐渐加大,当手臂划到肩下与水平面垂直时,拉水结束转入推水,此时身体转动幅度达到最大,约45°,肘关节弯曲也达到了最大程度,约90°一100°,与自由泳的高肘划水相似,我们称其为“倒高肘”划水技术,拉水结束时手掌距离水面约l5厘米。
推水开始后,手的移动领先于前臂和肘关节,手、前臂和上臂用力向后方推水,肘关节和前臂逐渐靠近身体。推水开始时手有向上的移动,当手上移至最高点时(距离水面约10厘米),前臂向内旋转,手掌朝后下方快速做鞭状推水动作。
推水结束时,手掌朝下,手臂伸直,手掌距离水面约40―50厘米,身体也开始向另一侧滚动,为下一步出水做好准备。
4、 出水
推水完成后,借助手向下压水的反作用力和胸部肌肉的收缩,手臂迅速提拉出水面。出水时手臂应尽量伸直,先压水后提肩,使肩部首先出水,再带动上臂、前臂和手依次出水。作为青少年游泳运动员应注意充分利用身体的滚动和肩部的转动,来轻松的完成手臂出水动作,
出水过程中手的姿势争议最多,规范的方法是大拇指领先出水,这样阻力较小、手臂自然放松,但是青少年队员不容易掌握,而且会形成身体扭动和入水时手臂不能完全伸直的现象,也有部分学员采取手背出水,这种方法容易掌握,但阻力较大。我建议大家现在使用小拇指出水,这种方式阻力小,空中移臂时无须在转动手臂,但是容易造成肌肉紧张,根据青少年队员的实际情况,小拇指出水比较实用和容易掌握,但随着技术水平的逐步提高,还是应该采用大拇指出水的方法。
5、 空中移臂
出水后,手臂应迅速直臂向肩前移动,移臂时手臂尽量在矢状面上移动,上臂贴耳。手臂移过垂直部位后应向外旋转,使掌心向外,为入水做好准备。在这里还是要提出身体的滚动和肩部的转动,只有灵活和熟练地掌握了这些技术,才能非常轻松、自如、规范完成包括入水、抱水、划水,出水和空中移臂动作,否则会出现一些错误的技术,游起来象一个机器人或东扭西歪,增大了游进过程中的阻力,使运动成绩大大降低。
6、两臂配合
在现代仰泳技术中两臂配合最好采用中后交叉,即一臂入水时,另一臂推水结束,两臂基本处于相反的位置,以保证动作的连贯性和前进速度的均匀性。部分学员在容易入水和出水处出现停顿动作,破坏了技术的连贯性,并会造成身体位置的不稳定。

二、青少年运动员常见技术错误及纠正方法

1、 手臂划水用力过早
原因:技术概念不清急于划水使身体前进。
方法:明确划水技术要领,强调手臂入水后,先做下滑托水动作,而后再用力向后加速划水。
2、 手入水点太宽或太窄
原因:身体位置感和控制力不强,肩关节灵活性较差。
方法:根据观察和体会,明确入水点的位置;加强肩关节柔韧性练习;采用矫枉过正法,要求手臂向相反点入水。
3、 两臂配合不连贯
原因:划手技术时,手臂在体侧有停顿。
方法;明确技术概念,强调划水时立即提臂出水。
4、 坐游
原因:收腹,届髋;打腿幅度过深。
方法:要求稍仰头,微挺胸、提肋,髋关节展平;头后部浸入水中,要求呼吸与手臂节奏紧密配合,加强规范的踢腿训练。
5、 脚踢不出来,下身沉
原因:腿部动作紧张;头及上身位置过高,脚的位置偏低。
方法:脚部动作要小,脚尽量接近水面踢水;下踢时踢出水花,直腿下压时要放松。

本文标题:常见语法错误-Matlab常见语法错误
本文地址: http://www.61k.com/1175889.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1