matlab编程代码

2024-05-19 05:11

1. matlab编程代码

A=[x(1) 1;x(2) 1];
B=y; 若y为行向量则B=y‘

inv(A)*B   %即为a,b的值

matlab编程代码

2. matlab编程

计算机程序就是计算机指令的集合,不同的编程语言指令与功能是不一样的.MATLAB语言是一种面向对象的高级语言,它具有编程效率高、易学易用的优点.
    MATLAB与其它大部分高级语言一样,有它自己的控制流语句.控制流极其重要,因为它使过去的计算影响将来的运算。MATLAB提供如下几种控制流结构:For循环,While循环,If-Else-End结构和switch-case-end结构。由于这些结构经常包含大量的MATLAB命令,故经常出现在M文件中.MATLAB支持的控制流语句和C语言支持的控制流语句在调用格式上非常相似.
1.For 循环
    For循环允许一条语句或一组语句被重复执行预先指定的次数。For循环的一般形式是:
              for x =array
                  语句
              end
在for和end语句之间的语句按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。例如,
    for n=1:10
       x(n)=sin(n*pi/10);
    end
       x
    x =
    0.3090    0.5878    0.8090    0.9511    1.0000    0.9511    0.8090    0.5878    0.3090    0.0000
    换句话,第一语句是说:对n等于1到10,执行所有语句,直至下一个end语句。第一次通过For循环n=1,第二次,n=2,如此继续,直至n=10。在n=10以后,For循环结束,然后执行end语句后面的任何命令.注意,该循环结束后,n=10.
   For循环的其它重要方面是:
    (1)For循环不能用For循环内重新赋值循环变量n来终止。
    For n=1:10
       x(n)=sin(n*pi/10);
       n=9;
    end
    x
    x =
    0.3090    0.5878    0.8090    0.9511    1.0000   0.9511  0.8090    0.5878    0.3090    0.0000
        n
        n=
           9
执行过程是这样的:
n=1,
x(1)=sin(pi/10),
n=9,
n=2,
x(2)=sin(2*pi/10),
n=9,
n=3,
...,
n=10,
x(10)=sin(10*pi/10),
n=9.
循环结束后,n=9.
   (2)在For循环内接受任何有效的MATLAB数组。
           data=[3 9 45 6; 7 16 -1 5]
           data =
           3    9   45    6
           7   16   -1    5
           for n=data
           x=n(1)-n(2)
           end
           x =
           -4
           x =
           -7
           x =
           46
           x =
           1
   (3)For循环可按需要嵌套。
           For n=1:5
            for m=1:5
             A(n,m)=n^2+m^2;
            end
            disp(n)
           end
           1
           2
           3
           4
           5
           A
           A =
           2    5   10   17   26
           5    8   13   20   29
           10   13   18   25   34
           17   20   25   32   41
           26   29   34   41   50
    (4)当有一个等效的数组方法来解给定的问题时,应避免用For循环。例如,上面的第一个例子可被重写为
    n=1:10;
    x=sin(n*pi/10)
    x =
    0.3090    0.5878    0.8090    0.9511    1.0000    0.9511    0.8090    0.5878    0.3090    0.0000
两种方法得出同样的结果,而后者执行更快,更直观,要求较少的输入。
    (5)为了得到最大的速度,在For循环(While循环)被执行之前,应预先分配数组。例如,前面所考虑的第一种情况,在For循环内每执行一次命令,变量x的大小增加1。迫使MATLAB每通过一次循环要花费时间对x分配更多的内存。为了消去这个步骤,For循环的例子应重写为
           x=zeros(1,10);
           for n=1:10
           x(n)=sin(n*pi/10);
           end
现在,只有x(n)的值需要改变。
    例1 相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上放一粒麦子,第二个格子上放二粒麦子,以后每个格子的麦子数都按前一格的两倍计算。如果陛下按此法给我64格的麦子,就感激不尽,其他什么也不要了。”国王想:“这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一袋还不够,请你为国王算一下共要给达依尔多少小麦?(1 小麦约 颗)
    解: 麦粒总数为
       
    程序如下:
a=1;
s=0
for i=1:64
    s=s+a;
    a=2*a;
end
s=s/1.4/10^8
运行后得:
s=
   1.3176e+011
    例2 公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?
           解 设 x:鸡翁数,则x的范围:0~19
           y:鸡母数,则y的范围:0~33
           z:鸡雏数,则z的范围:0~100
则:
     x+y+z=100
     5x+3y+z/3=100
这是一个不定方程。
for x=0:19
    for y=0:33
        for z=0:100
            if (x+y+z==100)&(5*x+3*y+z/3==100)
                d=[x,y,z]
            end
        end
    end
end
运行后得结果:
d =
     0    25    75
d =
     4    18    78
d =
     8    11    81
d =
    12     4    84
 
2.While 循环
    与For循环以固定次数求一组命令的值相反,While 循环以不定的次数重复执行一组语句。While循环的一般形式是:
    while 表达式1
       语句1
    end
只要表达式1里的所有元素为真,就执行while和end之间的语句1,否则,就结束循环。通常,表达式的值给出一个标量值,但数组值也同样有效。在数组情况下,当数组的所有元素为真(值不等零)时,就执行语句1,数组中有一个元素为假(值为零),就结束循环。
           例3按下面的公式计算:
          
使误差小于给定的 .
   解: 把 作为误差,程序如下:
error=input('请输入误差:');
x=1;
y=0;
n=1;
while x>error
    y=y+1;
    x=x/n;
    n=n+1;
end
e=y
运行如下:
请输入误差:0.001
e =
    2.7181
3.IF-ELSE-END 结构
    很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种逻辑由某种If-Else-End结构来提供。最简单的If-Else-End结构是:
    if 表达式1
    语句1
    end
    如果在表达式1中的所有元素为真(非零),那么就执行if和end语言之间的语句1。
    假如有两个选择,If-Else-End结构是:
    if 表达式1
        语句1
     else
        语句2
     end
在这里,如果表达式1为真,则执行语句1;如果表达式是假,则执行语句2。
    当有三个或更多的选择时,If-Else-End结构采用形式
     if 表达式1
        语句1
     elseif 表达式2
        语句2
     elseif 表达式3
        语句3
     elseif 表达式4
        语句4
     elseif ……
            .
            .
            .
     else
         语句
     end
    如果表达式1为真,则执行语句1,结束循环;如果表达式1为假,则检验表达式2,如果表达式2为真,则执行语句2,结束循环;如果表达式2为假,则检验表达式3,如此下去,如果所有表达式都为假时,则执行最后的语句。即只执行第一个真值表达式相关的语句;接下来的表达式不检验,跳过其余的If-Else-End结构。而且,最后的else命令可有可无。
4.switch-case-end结构
    如果在一个程序中,必须针对某个变量不同取值情况进行相应操作,switch语句比if else语句更方便。switch语句的一般形式为:
    switch 分支条件(数值或字符串)
    case 数值(或字符串)条件1
          语句1
    case 数值(或字符串)条件2
          语句2
    case 数值(或字符串)条件3
          语句3
    case ...
          ...
    otherwise
          语句
    end
其中分支条件可以是一个函数、变量或者表达式.如果条件1与分支条件匹配就执行语句1,退出循环;否则,检验条件2,如果条件2与分支条件匹配执行语句2,退出循环;否则,检验条件3,...,当所有条件都不与分支条件匹配时就执行最后的语句。注意otherwise是可以省略的。
    例4 在图形界面上放置一个弹出式菜,点击弹出式菜单可以设置曲线颜色。
    解:程序如下:
x=linspace(-6,6,50);
y=sin(x);
h=plot(x,y,'linewidth',4);
h0=uicontrol('position',[600,500,100,30],...
    'style','popupmenu',...
    'string','红色|蓝色|黄色|黑色|青色',...
    'callback',...
    ['v=get(h0,''value'');',...
        'switch v;',...
        'case 1;',...
        'set(h,''color'',''r'');',...
        'case 2;',...
        'set(h,''color'',''b'');',...
        'case 3;',...
        'set(h,''color'',''y'');',...
        'case 4;',...
        'set(h,''color'',''k'');',...
        'case 5;',...
        'set(h,''color'',''c'');',...
        'end;']);

3. matlab编程

亲。你好很高兴为您解答:matlab编程答:亲亲您好, matlab 程序的文件代码是以.m文件的形式呈现的。将matlab代码编写进.m文件内然后运行即可。例子:建立一个 helloworld.m文件内包括内容如下:fprintf('Hello World!');使用快捷键F5直接运行,然后可以在控制台下看到打印的:Hello World!希望我的回答对您有所帮助,祝您生活愉快,如果我的回答对您有所帮助  希望您能给个5星赞.感谢您对我的支持。【摘要】
matlab编程【提问】
【提问】
【提问】
我需要一个简单的编程【提问】
亲。你好很高兴为您解答:matlab编程答:亲亲您好, matlab 程序的文件代码是以.m文件的形式呈现的。将matlab代码编写进.m文件内然后运行即可。例子:建立一个 helloworld.m文件内包括内容如下:fprintf('Hello World!');使用快捷键F5直接运行,然后可以在控制台下看到打印的:Hello World!希望我的回答对您有所帮助,祝您生活愉快,如果我的回答对您有所帮助  希望您能给个5星赞.感谢您对我的支持。【回答】
matlab的【提问】
亲亲 第一步,肯定是打开MATLAB!第二步,新建 FilenewScript然后直接输入n=0:20;k=1;a=0.8;xn 二k*a4 n;stem(n,xn,.);(这个程序是显示 指数序列的图形)第三步,点击run按钮会让你选择保存路径,这里我直接保存到了桌面,然后可能会跳出下面这个选项 框MATLAB EditorI 盘 JFile C:Users。  2、MacDesktopUntitled.m is not found in the current folder or on the MATLAB path.To run this file, you can either change the MATLAB current folder or add its folder to the MATLAB path.Change FolderAdd to PathCancelHelp意思大概是在文件不是保存在默认的文件路径中的,是要添加路径还是更改当前工作路径。选择change folder更改当前工作路径更简单一点【回答】
我需要一段小代码【提问】
亲亲  path =' . \data\Lab' ;fnames = dir(path);for i = 1:length(fnames)-2I = imread(fullfile(path, fnames(i+2) .name));I2 = imresize(I,[ 384, 384], Method' ,' nearest' ) ;imwrite(I2, fullfile(path, fnames(i+2) .name));end【回答】

matlab编程

4. 用matlab做。。。。。。跪求代码?

利用matlab软件,使用克莱姆法则求解线性方程组。可以按下列步骤计算:
1、提取方程系数数据,并赋值给A矩阵。
2、提取常数项系数数据,并赋值给B矩阵。
3、将B矩阵替换A矩阵的第一列,并赋值给A1矩阵。
4、将B矩阵替换A矩阵的第二列,并赋值给A2矩阵。
5、将B矩阵替换A矩阵的第三列,并赋值给A3矩阵。
6、将B矩阵替换A矩阵的第四列,并赋值给A4矩阵。
7、计算A矩阵的行列式值。det(A)
8、计算A1矩阵的行列式值。det(A1)
9、计算A2矩阵的行列式值。det(A2)
10、计算A3矩阵的行列式值。det(A3)
11、计算A4矩阵的行列式值。det(A4)
12、计算X1的值,det(A1)/det(A)
13、计算X2的值,det(A2)/det(A)
14、计算X3的值,det(A3)/det(A)
15、计算X4的值,det(A4)/det(A)
执行代码后得到X的值。


5. matlab编程

问题出在表达式中少一个点运算符。即点除 ./
y=(1-15/16*(1-(x/80).^2).^2  ./ (1+(x/80).^2/3).^3).^(-0.5)*20;
修改后可以得到一组向量值。

matlab编程

6. matlab编程

问题出在少了一个点乘符号,即  *  应该为  .* 。函数代码为
function z= my_comp(x,y)real_x= real(x); imag_x= imag (x); real_y= real(y); imag_y= imag (y);real_z= real_x .* real_y- imag_x .* imag_y;
imag_z= real_x .* imag_y + imag_x .* real_y;z= real_z + imag_z *i;
>>x=[0.25401+0.85625*i,0.43122+0.5842*i,0.70253+0.37358*i,0.40233+0.22169*i,0.18184+0.21899*i]';  %回车
>>y=0.52223+0.67988*i,0.43342+0.13665*i,0.7413+0.8584*i,0.07045+0.19983*i,0.84733+0.6073*i]';  %回车
>>my_comp(x,y)  %回车
运行结果

7. matlab编程

按照题主的表达,应该就是这样一个函数关系:
    x = f(z) = 1, atan(z)>0.5;
          或  = 2, atan(z)<=0.5
 
可以定义匿名函数,然后求数值积分:
>> f=@(z)1*(atan(z)>0.5) + 2*(atan(z)> quadl(f,0,1)ans =    1.5463这里尤其需要提醒,注意不要把匿名函数写成类似下面的表达式:
f=@(z)atan(z)>0.5 + 2*(atan(z)<=0.5);这种写法的问题在于,加号的优先级高于关系运算,导致0.5和加号后面的式子被看成一个整体,和atan(z)进行关系运算。

matlab编程

8. 用matlab编程

用MATLAB 实现傅里叶变换:
用户任意输入一个函数,然后,输出函数的傅里叶变换函数,然后输出振幅频率 。
x=sin(2*pi*t); %任意输入一个函数。
y=fft(x); %傅里叶变换函数。
plot(abs(y)); %振幅频率。 
函数(function)表示每个输入值对应唯一输出值的一种对应关系。这种关系使一个集合里的每一个元素对应到另一个(可能相同的)集合里的唯一元素。函数f中对应输入值的输出值x的标准符号为f(x)。包含某个函数所有的输入值的集合被称作这个函数的定义域,包含所有的输出值的集合被称作值域。若先定义映射的概念,可以简单定义函数为,定义在非空数集之间的映射称为函数。
傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。