zoukankan      html  css  js  c++  java
  • Basic

    Basic

    
    %% 
    % 获得函数帮助说明
    help randi
    
    %%
    result=[log(2.7),log2(2),log10(10),exp(1)];
    disp(result)
    % 2*3:[0,1]间均匀分布矩阵
    rand(2,3)
    % 3*3:[0,1]间均匀分布矩阵
    rand(3)
    % randi([min,max],m,n):m*n均匀分布随机数矩阵,含两端
    choic=randi([0,2],1,4)
    % 复数
    2+i*4
    %% 
    % 运算优先级:() > ^ > * / > + -
    % 变量使用前无需申明
    % 数字默认double 类型
    % i,j 指向复数的虚部
    i
    j
    % 无穷大
    Inf
    % log(0)
    eps
    % not a number
    NaN
    pi
    % 指向最近一个匿名结果
    ans
    
    % 变量优先级:变量>内建函数>子函数
    cos='string'
    cos(3) %'r'
    %%
    % 格式化输出,四舍五入式
    % format bank:2位小数, short:4位小数,long :15位小数,shortE:short 的科学计数法形式,longE:long的科学计数法形式
    % format hex:16进制,rat:分数形式
    format bank
    a=12/6.5
    
    %%
    a=[1,2,3];% 行向量
    b=[1;2;3];%列向量
    a*b% 矩阵乘法
    
    %%
    % matlab 下标都是从1 开始
    
    a=[1 2 3; 4 5 6; 7 8 9 ];
    a(3) % 矩阵从左到右按列分组,每组从上到下依次从1开始编号
    a([1 2; 3 4]) % 第1 2;3 4个元素构成新的数组
    a(:) %按序号的矩阵所有元素列向量
    a(2,3)% 数组下标访问
    a([1 3],[2 3])% 第1 3行于第  2 3列相交处元素构成新的2*2矩阵
    
    %% 
    %向量
    a=1:10
    a=1:2:10
    a=linspace(1,10,3)
    
    %%
    clc
    a=magic(5)
    a(1,:) %':'表示该列所有行,或者改行所有列
    a(:,1)
    a(:,1)=[] %[]表式删除改行或列,矩阵维度发生变化
    a(1,:)=[]
    
    %%
    % 矩阵拼接
    clc
    a=randi(3,4)
    b=randi(3,4)
    c=[a b] %横向拼接a,b行数相同
    d=[a;b] %纵向拼接a,b列数相同
    
    %%
    clc
    a=randi([1,10],3,3)
    b=randi([1,10],3,3)
    c=2
    a+a% + 运算,元素与元素相加
    a+c 
    a-a 
    a-c
    a*b  % * 矩阵乘法,.* 对应元素间相乘
    a*c 
    a.*a
    a/c % a/b=>a乘以b的逆矩阵,a./b 对应元素相除,c.a=>a./c , a.=>b./a
    a/b 
    a./b  
    c.a  
    a.
    a^2 % a^2=>a*a , .^ 每个元素做乘方运算
    a.^2 
    a' % 转置
    
    %%
    clc
    eye(3) % 3*3单位矩阵
    zeros(2,3) %2*3 全0阵
    ones(2,3) %2*3 全1阵
    diag([1:2:10]) %把向量转化为对角矩阵
    
    %%
    clc
    a=randi([1,10],3,4)
    
    max(a)  % 多维矩阵返回每列最大值的行向量,行/列向量返回向量的最大值,
    max(max(a))
    max(a,[],2) %返回a中每行元素最大值的列向量
    
    min(a) %同上
    min(min(a))
    min(a,[],2)
    
    sum(a)%同上
    sum(sum(a))
    sum(a,2)
    
    mean(a)%同上
    mean(mean(a))
    mean(a,2)
    
    sort(a) %每列排升序
    sort(a,2) %每行排升序
    
    sortrows(a) %按第一列大小拍升序,其余列元素同第第一列同步变化
    
    size(a) %m*n
    size(a,1) %m
    size(a,2) %n
    
    length(a) %列数
    
    find(a==3) % 得到所有3所在的位置序号
    

    Struct Programming

    
    % 结构化编程,
    % %%:节标志,可以以节为单位运行。
    %%
    % rem(a,2)=>q%2,prod(1:n)=>1*2*3*...*n
    % randi([min,max],m,n):m*n均匀分布随机数矩阵,含两端
    % ';'不输出当前行结果
    choic=randi([0,2],1,1);
    switch choic
        case 0
            disp('0');
        case 1
            disp('1');
        case 2
            disp('2');
    end
    
    for i=1:10
        % [0,10]均分101份,含头和尾
        x=linspace(0,10,101);
        plot(x,sin(x+i));
        print(gcf,'-deps',strcat('plot',num2str(i),'.ps'));
    end
    %%
    % 清空输出
    clc ;
    % 关闭所有子窗口
    close all
    i=1;
    result=0;
    while i<=999
        result=result+i;
        i=i+1;
    end
    disp("result:"+result)
    
    %%
    % a下标从1开始
    a=zeros(1,5);
    % start:step:end->含头尾[start,end]
    for index=1:2:10
        a((index+1)/2)=2^index;
    end
    disp(a)
    
    %%
    clc
    % 清空数据
    clear a
    % 开始计时 
    tic
    for i=1:2000
        for j=1:2000
            a(i,j)=i+j;
        end
    end
    % 结束计时并输出
    toc
    
    clear a
    tic
    % 预分配内存以获得更高的运算速度,之后给变量赋值时不用判断内存是否足够,不够就要从新分配内存
    a=zeros(2000,2000);
    for i=1:2000
        for j=1:2000
            a(i,j)=i+j;
        end
    end
    toc
    
    %%
    clear 
    tic
    a=[0 -1 4; 9 -14 25 ;-34 49 64 ;1 2 3];
    %[列数,行数]
    arraySize=size(a);
    disp(a)
    disp(arraySize)
    b=zeros(arraySize);
    for i=1:arraySize(1)
        for j=1:arraySize(2)
            if a(i,j)<0
                b(i,j)=0;
            else
                b(i,j)=a(i,j);
            end
        end
    end
    disp(b)
    toc
    
    %%
     for i=1:10000
        % 0~1 均匀分布随机数
         num=rand();
         if num>=0.999
            % num2str:123->'123';'123'+""->"123";"123"+1->"1231"
             disp(num2str(num)+" "+i);
             % 跳出循环
             break;
         end
     end
    
     %%
     % 可一次输入多组数据,同一个函数参数用[]
     % acc(12,343,4545,34,3) acc(43,354,555,5,45)
     % 结果变量同样数组返回
    [a,f]=acc([12 43],[343 354],[4545 555],[34 5],[3 45]);
    disp("a:
    "+a)
    disp("f
    "+f)
    %%
    a=1;
    T=2^0.5*pi*a/4;
    % 函数句柄,注意'.'运算
    % 单行定义,多参数,单一结果,隐式返回
    f=@(x)2^0.5*a./2-(a./2)./cos(fix(x./T)*pi./2+pi./4-2^0.5*x./a) ;
    x=0:0.005:4*T;
    plot(x,f(x))
    % 坐标轴参数
    title('x-y');
    ylim([0,1])
    ylabel('y');
    xlabel('x');
    %%
    % 输入数字,数组,函数名rand()
    x=input('fuck me:
    ');
    num2str(x)
    % 输入字符向量
    x=input('fuck me:
    ','s');
    isempty(x)
    %%
    f2c()
    
    
    % acc函数名要和文件名相同
    function [a,f] = acc(v_0,v_1,t_0,t_1,m)
        % 使用.运算,满足多组数据输入的运算
        % 返回的参数在函数声明时只是申明,在必要时要定义或单独分配内存
        a=(v_1-v_0)./(t_1-t_0);
        f=m.*a;
        % 以[a,f]形式返回结果,如果一次输入多组数据,单个变量本身就是一个数组。
    end
    
    
    
    
    function [outputArg1,outputArg2] = funDefVar(name,age,gender)
        %获得函数基础信息
        outputarg1=name;
        outputarg2=age;
        % 当前.m文件名
        mfilename
        % 函数输入参数数目
        nargin
        % 函数输出参数数目
        nargout
    end
    
    
    
    
    function [ ] = f2c()
    
        while 1
            f=input('f:
    ');
            if isempty(f)
                break
            end
            c=(f-32)*5/9;
            disp("c:"+num2str(c))
        end
    
    end
    
    
    
  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/huangqiang97/p/11847522.html
Copyright © 2011-2022 走看看