程序出错的地方是:(1)ode23函数书写格式错误。[t,u]=ode23('lin',[t0tf],u0); 应该为 [t,u]=ode23(@lin,[t0tf],u0);(2)自定义函数书写格式错误。uprim=uprim'; 应该为 uprim=uprim(:);修改后

I=imread(D:\peo jpg);%%确保你的图像是灰度图像,不是的话,转化成灰度图像rgb2gray J=imnoise(I,'gaussian',0,0.005);%%英文输入单引号,gaussian处 h=fspecial('average',3);%%英文输入单引号 I2=uint8(round(

那么很显然你的错误就是,没有把当前定义好。下面给出代码:H1=20;H2=20;H3=20;g=9.8;h1 =[ ];h2=[ ];h3=[];i=0;for t =0:0.01:10i=i+1;%%设置下标,来表示当前h1,h2,h3的元素if (sqrt(H1)-0.

可能的原因是,这段程序本来用于处理别的图像文件,被你换了一张图片。程序原来处理的图片应该是索引色的(indexed image),图像数据是二维数组,而你现在的图片是真彩色(RGB image),图像数据是三维数组,所以,在上面一行

一、右击 授予访问权限 二、点击特定用户 三、将everyone那里改为读取/写入,就可以了

应该是c或c++了,VB和Delphi也接触过,我想版面(matlab版)大部分人也差不多),如果你抱着“把其他语言的思想运用在matlab里面”的话,那么我想,即使程序运行不 出错,也很难把握matlab的精髓,也就很难发挥matlab的作

你的目的是将data1加载为变量名为c1的变量,但这里可能出了问题。将load data1 c1换为 s=load('data1.mat');sc=struct2cell(s);c1=cell2mat(sc);如果你知道data1里变量的名称且不想改为另外的名字的话,直接load

Matlab老是报错出错untitled>QPSKsave(’signal.mat’,’m’)

可能某个启动函数被删了或者被其他软件覆盖了。建议你还是重新安装该版本的matlab,替代已安装的matlab。

1、在这里编写了一段function代码。2、运行程序:然后点击工具栏中的“运行”或者在命令栏中输入函数名。3、运行状态:该段代码一直在运行,如图所示,为一段动态显示代码。左下角一直显示“正忙”状态。4、正忙状态,不能

进入死循环了,虽然你外循环是对t,但是内循环while内的t是没有变化的,只要t<=T就会一直执行内循环

原因是,在迭代过程中R(i)始终没能满足R(i)<=0.1的循环结束条件,所以循环就一直继续下去。请检查R的更新条件,是否存在可能达到你要求的结束条件?大致看了一下,好像是按照导引律计算接近某个目标的吧?需要注意的是,

matlab正忙不是在计算,而是由于这段代码中有错误的命令,因此该文件就一直在运行中,无法停止,出现这样的故障时我们只能够使用强制停止的方法来终止代码的运行,可以利用快捷键CTRL+c来强制关闭正在运行的程序。MATLAB是美国Ma

因为S1表达式含有两个f、w变量,所以用int()函数求S1(f,w)是错误的。Matlab分不清是求以f为变量的积分,还是以w为变量的积分。电脑始终在瞎转。。。请你把要求的积分式贴出来,以便于帮你解决。

我的MATLAB程序一直在运行,不出结果,左下角一直显示正忙,有没有大神指教一下?

);sc=struct2cell(s);c1=cell2mat(sc);如果你知道data1里变量的名称且不想改为另外的名字的话,直接load data1就可以了,然后在workspace里观察下data1里的变量名是什么,然后在下面合并时使用data1里的变量名即可。

所谓untitled的意思就是“没有命名的文件”,属于matlab默认文件名。当你保存文件时,如果不修改文件名,系统以untitled为名字保存。

可能的原因是,这段程序本来用于处理别的图像文件,被你换了一张图片。程序原来处理的图片应该是索引色的(indexed image),图像数据是二维数组,而你现在的图片是真彩色(RGB image),图像数据是三维数组,所以,在上面一行

4. 使用管理员权限运行 Matlab:有时候,权限不足也可能导致 Matlab 停止工作。你可以尝试以管理员权限运行 Matlab,然后再试试看。5. 更新你的 Windows 系统:如果你的 Windows 系统过旧,可能会导致兼容性问题。你可以尝试

运行:n=1;while prod(1:n) < 1e100 n=n+1;end n 结果:n = 70 后面加个n就ok。

fig的属性里面有一个Name选项,将其值改为中文名字再运行就可以了

1.你的程序里是zd按照符号运算的。符号运算不用plot,好像用要用ezplot的。2.我不知道版你程序里的权物理概念,但改一下就行:syms L I Rs Rr a Rg Z x y I=1000 L=2 Rg=15 Rs=0.026 Rr=0.0001 Z=(Rg

matlab运行时总是出现Untitled15是什么原因?

2.重命名时,另存为的方法是对的,需要对.m文件和.fig文件均要另存为,这样都进行另存为才可以正常运行。

输入guide或者 点击 然后出来个窗口 选择open existing gui 点击Browser 找到你要打开的fig文件

1.你的程序里是zd按照符号运算的。符号运算不用plot,好像用要用ezplot的。2.我不知道版你程序里的权物理概念,但改一下就行:syms L I Rs Rr a Rg Z x y I=1000 L=2 Rg=15 Rs=0.026 Rr=0.0001 Z=(Rg

fig的属性里面有一个Name选项,将其值改为中文名字再运行就可以了

matlab的gui中*.fig已经保存文件名,为什么运行时还Untitled

这个是提示第7行出现了错误。根据题主的问题 错误发生在f1=(99*cos(x)*(99*sin(x) + 15))/((99*sin(x) + 15)^2 + 24025)^(1/2) - 99*sin(x); 这一句当中 根据分析表达式,错误应该是矩阵乘法中维数不

1.你的程序里是zd按照符号运算的。符号运算不用plot,好像用要用ezplot的。2.我不知道版你程序里的权物理概念,但改一下就行:syms L I Rs Rr a Rg Z x y I=1000 L=2 Rg=15 Rs=0.026 Rr=0.0001 Z=(Rg

所谓untitled的意思就是“没有命名的文件”,属于matlab默认文件名。当你保存文件时,如果不修改文件名,系统以untitled为名字保存。

n=1;while prod(1:n) < 1e100 n=n+1;end n 结果:n = 70 后面加个n就ok。

Matlab 显示untitled

数组越界了,看看wz{c(1)}中c(1)的值,再看看wz的长度

function [db,mag,pha,grd,w] = freqz_m(b,a);[H,w] = freqz(b,a,1000,'whole');H = (H(1:1:501))'; w = (w(1:1:501))';mag = abs(H);db = 20*log10((mag+eps)/max(mag));pha = an

[I map]=imread('c:\美女\杨明菲131027 1.jpg','jpg'); %图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中 imshow(I,map);

可能的原因是,这段程序本来用于处理别的图像文件,被你换了一张图片。程序原来处理的图片应该是索引色的(indexed image),图像数据是二维数组,而你现在的图片是真彩色(RGB image),图像数据是三维数组,所以,在上面一行

MATLAB程序执行后出现这种情况,请大神知道,急急急!!!Error in ==> Untitled at 10 if mask(i,j)==0;

这个是提示第7行出现了错误。根据题主的问题 错误发生在f1=(99*cos(x)*(99*sin(x) + 15))/((99*sin(x) + 15)^2 + 24025)^(1/2) - 99*sin(x); 这一句当中 根据分析表达式,错误应该是矩阵乘法中维数不匹配造成,原表达式应改为: f1=(99*cos(x).*(99*sin(x) + 15))./((99*sin(x) + 15)^2 + 24025).^(1/2) - 99*sin(x);
将Figure需要改为小写哈figure;另外Inshow函数应该是Imshow函数哈
尊敬的用户,您好!当您在MATLAB中运行代码时,如果未指定保存文件的名称,MATLAB将默认创建一个名为"untitled"的文件,并将其显示为当前编辑器的标签。这种情况通常发生在您在命令窗口或脚本编辑器中直接运行代码时。要解决这个问题,您可以按照以下步骤之一操作:1. 另存为:在运行代码之前,将脚本保存为一个具有适当名称的文件。选择"文件(File)"菜单,然后选择"另存为(Save As)"选项,为您的代码文件选择一个名称并保存。然后,当您运行代码时,MATLAB将使用所选文件的名称而不是默认的"untitled"。2. 重新命名:如果您已经运行了代码并在标签中看到了"untitled",您可以在编辑器中右键单击该标签并选择"重命名(Rename)"选项。然后,为文件选择一个新的名称,并将其保存。这样,MATLAB将更新标签以显示新的文件名。请记住,将代码保存为文件非常重要,这样您就可以在需要时轻松找到和重用它们。此外,通过为文件选择有意义的名称,您可以更轻松地理解和组织您的代码库。【摘要】 Matlab运行代码之后出现untitled【提问】 尊敬的用户,您好!当您在MATLAB中运行代码时,如果未指定保存文件的名称,MATLAB将默认创建一个名为"untitled"的文件,并将其显示为当前编辑器的标签。这种情况通常发生在您在命令窗口或脚本编辑器中直接运行代码时。要解决这个问题,您可以按照以下步骤之一操作:1. 另存为:在运行代码之前,将脚本保存为一个具有适当名称的文件。选择"文件(File)"菜单,然后选择"另存为(Save As)"选项,为您的代码文件选择一个名称并保存。然后,当您运行代码时,MATLAB将使用所选文件的名称而不是默认的"untitled"。2. 重新命名:如果您已经运行了代码并在标签中看到了"untitled",您可以在编辑器中右键单击该标签并选择"重命名(Rename)"选项。然后,为文件选择一个新的名称,并将其保存。这样,MATLAB将更新标签以显示新的文件名。请记住,将代码保存为文件非常重要,这样您就可以在需要时轻松找到和重用它们。此外,通过为文件选择有意义的名称,您可以更轻松地理解和组织您的代码库。【回答】
亲[心]~您好哈~[大笑]我的解答如下哈[太阳]请耐心看下哈[给力]:Matlab运行代码后窗口标题显示为untitled,通常有以下几种可能原因:1. 未保存代码文件:如果您直接在Matlab命令窗口运行代码段,而未将代码保存为m文件,则Matlab无法获取文件名,窗口标题会显示为untitled。解决方法是将代码保存为m文件,然后运行m文件。2. m文件未指定文件名:当您使用文件>新建>脚本创建m文件时,如果未立即指定文件名保存,则该m文件会被暂时命名为untitled,运行该文件后窗口标题也会显示untitled。解决方法是给m文件指定一个文件名,并保存。3. 已指定文件名但未保存:如果您编辑m文件并指定了文件名,但编辑完成后未保存文件,直接运行了m文件。由于文件内容已更改但文件名未改变,Matlab会继续使用untitled作为窗口标题。解决方法是保存m文件后再运行。4. m文件编码格式异常:m文件保存时的编码格式选择错误,如未使用UTF-8编码,Matlab无法正确读取m文件,运行后窗口标题显示为untitled。解决方法是确认m文件已使用UTF-8编码,如果未使用需要重新保存m文件为UTF-8编码格式。 5. m文件严重损坏:在极少情况下,m文件结构或内容严重损坏,Matlab无法识别其为标准m文件,运行后窗口标题显示untitled。解决方法是检查并修复m文件,或重新编写m文件。综上,Matlab运行代码后窗口标题显示为untitled的原因主要是代码未保存为m文件或m文件未正确指定文件名和保存。您需要确认代码已保存为UTF-8编码格式的m文件,文件名已正确指定,并保存文件。如果问题仍未解决,则需要检查m文件内容是否正常。【摘要】 Matlab运行代码之后出现untitled【提问】 亲[心]~您好哈~[大笑]我的解答如下哈[太阳]请耐心看下哈[给力]:Matlab运行代码后窗口标题显示为untitled,通常有以下几种可能原因:1. 未保存代码文件:如果您直接在Matlab命令窗口运行代码段,而未将代码保存为m文件,则Matlab无法获取文件名,窗口标题会显示为untitled。解决方法是将代码保存为m文件,然后运行m文件。2. m文件未指定文件名:当您使用文件>新建>脚本创建m文件时,如果未立即指定文件名保存,则该m文件会被暂时命名为untitled,运行该文件后窗口标题也会显示untitled。解决方法是给m文件指定一个文件名,并保存。3. 已指定文件名但未保存:如果您编辑m文件并指定了文件名,但编辑完成后未保存文件,直接运行了m文件。由于文件内容已更改但文件名未改变,Matlab会继续使用untitled作为窗口标题。解决方法是保存m文件后再运行。4. m文件编码格式异常:m文件保存时的编码格式选择错误,如未使用UTF-8编码,Matlab无法正确读取m文件,运行后窗口标题显示为untitled。解决方法是确认m文件已使用UTF-8编码,如果未使用需要重新保存m文件为UTF-8编码格式。 5. m文件严重损坏:在极少情况下,m文件结构或内容严重损坏,Matlab无法识别其为标准m文件,运行后窗口标题显示untitled。解决方法是检查并修复m文件,或重新编写m文件。综上,Matlab运行代码后窗口标题显示为untitled的原因主要是代码未保存为m文件或m文件未正确指定文件名和保存。您需要确认代码已保存为UTF-8编码格式的m文件,文件名已正确指定,并保存文件。如果问题仍未解决,则需要检查m文件内容是否正常。【回答】 我命名了之后,他又只显示文件名了没有显示结果【提问】 Matlab在运行代码后,默认会打开一个名为untitled的新窗口显示运行结果。如果您对该窗口进行了命名,Matlab有时会只显示窗口名称而不显示具体的运行结果,这通常有以下几个原因:1. 结果输出窗口被最小化:如果您将结果输出窗口最小化了,Matlab会只显示窗口标题而不显示内容,可以点击窗口标题将窗口恢复到最大化,则可以看到结果输出。2. 结果输出很长被截断:如果您的代码运行结果输出很长,可能会超出窗口显示范围被截断,此时只看到窗口标题。您可以通过滚动窗口或拖动窗口边框来查看完整的运行结果。3. 被其他窗口遮挡:运行结果窗口有可能被Matlab IDE或其他窗口遮挡,需要移动其他窗口才可以查看结果输出。4. 设置问题:Matlab的窗口设置可能存在问题,无法正确显示所有的窗口内容。您可以尝试: - 将Matlab工作空间栏最小化:查看>工作空间 取消选中。 - 重置Matlab工作空间:查看>重置工作空间 进行重置。 - 重置Matlab窗口设置:查询窗口>窗口布局>重置窗口,将所有窗口设置恢复默认。5. 代码错误:如果您的Matlab代码存在语法错误或其他错误,运行时也可能不显示结果窗口或只显示窗口标题。需要修复代码错误,重新运行才可以 see 到结果输出。除上述情况外,如果运行结果窗口仍然只显示标题而无任何内容,可能是Matlab环境或显示设置的其他问题。您可以尝试:重启Matlab、更新显卡驱动程序、调整显示字体大小、屏幕分辨率等来解决。【回答】 还是不行%% 蒙特卡洛分析累计期权rng(0); %固定种子Z=randn(1,25); %随机数列r=0.026; %连续复利无风险利率c=0.155; %波动率t=1/12; %每年交易12次K=0.87; %约定价格NN=5000;S=zeros(NN,26);S(:,1)=ones(NN,1)*0.979; %初始汇率为0.979,26次结算,重复运算NN次%% 根据收益正态分布原则计算汇率变化for i=1:NN rng(i); %固定种子 Z=randn(1,25); %随机数列 for j=2:26 S(i,j)=S(i,j-1)*exp((r-c*c/2)*t+c*Z(1,j-1)*sqrt(t)); endend%% 根据汇率结果计算计算收益和贴现for i=1:NN for j=1:26 E(i,j)=1000*max(0,S(i,j)-K)-2500*max(0,K-S(i,j)); V(i,j)=exp(-r*(j-1))*E(i,j);【提问】 你在Matlab中打开一个新的编辑窗口,输入代码,运行后却出现了“untitled”窗口,可能是因为你之前没有给窗口命名,导致Matlab自动生成了一个默认的文件名“untitled”。要解决这个问题,你可以尝试以下几个方法:1. 在运行代码之前为当前编辑窗口命名。在编辑窗口中,选择“文件”菜单下的“另存为”选项,输入你要为该代码文件命名的名称,然后点击“保存”。这样就可以避免出现“untitled”窗口。2. 在Matlab的设置中关闭自动保存。在Matlab菜单中选择“文件”->“首选项”->“Matlab”->“编辑器/调试器”中勾选“关闭自动保存未命名的文档”选项,这样就可以避免自动生成“untitled”窗口。3. 检查你的系统和Matlab版本是否兼容。如果你使用的是较老版本的Matlab,可能会出现一些兼容性问题。可以升级Matlab或尝试使用其他版本进行运行。希望以上方法能够帮助你解决问题。【回答】 还是不可以【提问】 那您具体运行提示什么亲~【回答】
将a.fig的NAME属性改为b即可。 新文件生成是缺省的NAME属性名与文件名相同。 View-〉PropertyInspector中的NAME属性。
pushbutton的callback 你连pushbutton都没有肯定无法调用
你运行函数的时候加参数了么。。。。
fig的属性里面有一个Name选项,将其值改为中文名字再运行就可以了
  MATLAB是一种对技术计算高性能的语言。   它集成了计算,可视化和编程于一个易用的环境中,在此环境下,问题和解答都表达为我们熟悉的数学符号。   典型的应用有: 数学和计算 算法开发 建模,模拟和原形化 数据分析,探索和可视化 科学与工程制图 应用开发,包括图形用户界面的建立 MATLAB是一个交互式的系统,其基本数据元素是无须定义维数的数组。   这让你能解决很多技术计算的问题,尤其是那些要用到矩阵和向量表达式的问题。而要花的时间则只是用一种标量非交互语言(例如C或Fortran)写一个程序的时间的一小部分。
一、字符和字符串 在MATLAB中不管是字符,还是字符串都是用单引号。而在C、C++、C#、Java等语言中,字符是用单引号的,字符串则必须用双引号。因此在MATLAB中如果需要在字符串中用到单引号的话,就要用两个单引号来代替。 如: >> a='this''is an apple' a = this'is an apple 同理,如果字符串中需要双引号的话,可以用四个单引号来代替。如下: >> b='I''''am Tim' b = I''am Tim 在MATLAB中的字符串连接,我们可以使用一对中括号。当然,这种连接方式也适用于向量、矩阵等的连接。如下: >> c=[a b] c = this'is an appleI''am Tim >> a1=[1 2];b1=[3 4]; >> c1=[a1 b1] c1 = 1 2 3 4 >> c2=[a1;b1] c2 = 1 2 3 4 但是,对于字符串的连接不能使用加号(+)来进行。这点和在C++、C#、Java等语言中是不一样的。因为在MATLAB中这些字符串也是以矩阵的形式存储的,你要是用加号的话,需要两个矩阵的大小一致。比如: >> a2='hello';b2='mustb'; >> a2+b2 ans = 213 218 223 224 209 但是,很明显,加完之后都是一系列的值了。本来,这些字符串也是以数值的形式存储的。而我们要取的字符串中某一个字符的时候,也是很方便的,直接像引用矩阵的元素一样。如下: >> a2(1) ans = h >> a2(4) ans = l >> find(a2>'i') ans = 3 4 5 可以看到,a2里面在字母i后面的字符有第3、4、5个字符,也就是llo了。 在MATLAB中要将一个数字转换为字符可以用num2str,将字符转换为数字可以用str2num。如下: >> stra1=num2str(a1) stra1 = 1 2 >> class(stra1) ans = char >> strb1='[3 4]'; >> str2num(strb1) ans = 3 4 对于strb1,我们可以使用eval函数,该函数可以将字符串作为一个MATLAB命令去执行。如下: >> p=eval(strb1) p = 3 4 相当于p=[3 4]。 当然了,C语言里面的sprintf、fprintf函数我们都是可以在MATLAB中使用的。比如: >> sprintf('Tim is %d years old.',24) ans = Tim is 24 years old. 至于fprintf函数,则需要用fopen去打开一个文件,然后写入数据进去。如下: >> fd=fopen('a.txt','w+'); >> fprintf(fd,'I am Tim.\n'); >> fprintf(fd,'My age is %d\n',24); >> fclose(fd); 然后,用MATLAB Editor打开MATLAB当前目录下的a.txt就可以看到: 但是,当你用记事本打开的时候会看到: 这是因为在Windows上要想换行需要\r\n,而不能单是\n。 二、if语句、for语句、switch语句、while语句、try-catch语句都以end结尾 在MATLAB中,没有goto和do…loop和do…while语句。而且语句的结尾都是以end结尾的。 >> t=4; >> if(t<5),disp('t is smaller than 5.'),end t is smaller than 5. 当然,if语句也可以有else语句。 >> if(t>5),disp('t is bigger than 5.'),else,disp('t is smaller than 5.'),end t is smaller than 5. 还可以用elseif。 >> if(t>5),disp('t is bigger than 5.'),elseif(t==5),disp('t is equal 5.'),else,disp('t is smaller than 5.'),end t is smaller than 5. 在MATLAB中,由于矩阵的索引都是从1开始的,这点和C、C++、C#、JAVA等语言是不一样的。所以,在循环的时候建议从1开始循环,而且循环的时候不推荐用变量i和j。因为这两个变量在MATLAB中表示的是复数的虚部变量。当然,如果你的程序里面没有复数,就不用怕。如果有复数,就要小心了。 之所以从1开始,是因为大多数时候我们使用循环是为了依次能访问到矩阵的每一个元素,所以,如果矩阵的索引出现了0,那么就会报出错误。所以,从1开始循环,是一种很好的习惯,而不是要求你必须这样做。 而且,在for循环中,你的循环变量不仅可以是一个数,也可以是一个向量。看下面的程序: >> aa=[1 2;3 4; 5 6;7 8]; >> for i=aa,disp(i),end 1 3 5 7 2 4 6 8 >> aa aa = 1 2 3 4 5 6 7 8 也就是说,i第一次的值是aa的第一列,i第二次的值是aa的第二列。这样的话,这个循环变量i就不仅仅是一个数了,二是一列数。 在MATLAB中,switch语句中是不用break的,而且默认的选项不是default,而是otherwise。如下: a=5; switch(a), case 1, disp('a is 1.'); case 2, disp('a is 2.'); case 5, disp('a is 5.'); otherwise, disp('sorry, i do not know.'); end 还需要注意的是case后面没有分号,而C、C++、C#、Java等语言中是必须是分号的。在MATLAB中可是没有分号,我程序中的逗号,也可以是没有的。指向上面的程序,在MATLAB中的输出是: a is 5. 至于while语句的使用和C、C++、C#、Java等语言中的while基本上是一致的。如下: a=5; b=0; while a>0 b=b+a; a=a-1; end b a Matlab命令窗口的输出是这样的: b = 15 a = 0 try-catch语句一般是用来捕捉错误的。 try a=input('Input a number: '); catch error('unknown error.'); end 当运行上面的程序,在MATLAB中输入: Input a number: # ??? Error using ==> tim_try at 4 unknown error. 三、变量不用声明 在MATLAB中的变量是可以不用声明的,这点和C类语言和Java是有很大区别的。但是,为了程序更清晰和加快程序的执行速度,提供初始化和声明有时是必要的。不如, b=[]; for i=1:10 b=[b i]; end b 在MATLAB命令窗口的输出如下: b = 1 2 3 4 5 6 7 8 9 10 如果你不初始化b为空的话,如下: for i=1:10 b=[b i]; end b 在命令窗口的输出如下:??? Undefined function or variable 'b'. 上面说过了,中括号[]可以用来合并向量的,这里变量b不存在,因此不能合并。所以会出错。 四、没有++、--操作符 在MATLAB中是没有++和--操作符的,因此需要转换。如a++; 可以转化为a=a+1;至于++a;你只需要将a=a+1的位置放到前面就可以了。 五、点乘、点除,但没有点加、点减 在点乘,是矩阵中的对应元素相乘。而不是矩阵的乘法。点除也是同样道理,对应元素想除。至于点加,就相当于加法。因为加减法本身就是对应元素的加减。 六、左除和右除 在C类和Java等语言中,除法就是一个操作符(/),但在MATLAB中(/)和(\)是有区别的。/代表的是右除,\代表的是左除。 >> A=[1 2;3 4];B=[5 6;7 8]; >> C1=A\B C1 = -3 -4 4 5 所以A左除B,就相当于A的逆矩阵乘B。 >> inv(A)*B ans = -3.0000 -4.0000 4.0000 5.0000 那么可想而知,A右除B,就相当于A乘B的逆矩阵。 >> A/B ans = 3.0000 -2.0000 2.0000 -1.0000 >> A*inv(B) ans = 3.0000 -2.0000 2.0000 -1.0000 七、MATLAB的编程思想 当你用MATLAB来写程序的时候,尽量以向量、矩阵为单位来考虑问题。也就是在MATLAB中常常能用一个点乘来代替多个循环的操作。也就是用向量化的操作来代替循环,这样能够大大的提高MATLAB程序的运行速度。 举个简单的例子: clear all clc a=round(rand(100)*100); b=round(rand(100)*100); tic f1=a.*b; toc tic for i=1:100, for j=1:100, f2(i,j)=a(i,j)*b(i,j); end end toc 在命令窗口的输出如下: Elapsed time is 0.000035 seconds. Elapsed time is 0.001871 seconds. 如果我们给f2初始化下,看看能不能加快速度。 clear all clc a=round(rand(100)*100); b=round(rand(100)*100); tic f1=a.*b; toc f2=zeros(100); tic for i=1:100, for j=1:100, f2(i,j)=a(i,j)*b(i,j); end end toc 此时,命令窗口的输出如下: Elapsed time is 0.000024 seconds. Elapsed time is 0.000147 seconds. 可以看到后面的循环的时间明显提高了很多。那么我们为上面的点乘运算的f1也初始化的话,速度会如何? Elapsed time is 0.000022 seconds. Elapsed time is 0.000146 seconds. 可以看到速度提升的不是很明显。如果你将a和b的维数增长到10000的话,提示的速度就明显了很多了。