MATLAB基础(一)

本文介绍了MATLAB的基础操作,包括矩阵创建、转置、拆分,以及特殊矩阵的建立如零矩阵、随机矩阵。还讨论了矩阵的运算,如加法、乘法、行列式的计算和线性方程组的求解。此外,还涉及到了矩阵的范数、函数矩阵分析和程序控制结构,如if分支和循环语句。

A = [1 2 3; 4 5 6;7 8 9];
B = [1 2 3; 4 5 6;7 8 9];
C = A';

N = 1000;
F =linespace(1,10 ,1000);
G = 1:1/N:(N-1)*10/N;

% e1 :e2: e3
% e1 初始值  步长 终止值
%linspace(a,b,n)
% a, b 分别为第一个和最后一个元素,n为总的元素个数

% 索引矩阵


 %% 重排矩阵
 H = reshape(A,9,1);
 I = A(:);
 
 J = [1 2 3;4 5 6];
 K = reshape(J,3,2);
 
 
 %% 矩阵的转置
 L = K';
 
 %% 矩阵拆分
 M= A(1,:);
 H = A(1,1:end-1);
 N = A([1 2],[1,2]);
 P  = A(2:3,1:3);
 %%删除  使用赋空值的方式来删除
 M(2) = [];
 A(1,:) = [];
 
 %% 扩展
 Q = repmat(A,2,2);
 
 R = [1 2 2 3 3 3 3 4 4 4];
 s = unique(R);
 
 
 % 特殊矩阵的建立
 % 零矩阵
 % zeros
 % 幺矩阵
 % ones
 % 单位矩阵
 % eye
 % 随机矩阵
 
 %% rand randn
 % rand 产生 0-1之间正态分布的矩阵
 S = rand(10,1);
 Sn = randn(1,10);  %矩阵为0 方差为1 的正态分布
 % 从0 到10 之间的均与分布
 S = 0+(10-0)*rand(10,1);
 % 从a到b之间分布的随机数
 S = a+(b-a)*rand;
 % 产生均值为u, 方差为s的正态分布随机矩阵
 y = u + sqrt(s)*randn;
 
 y = 0.6+sqrt(5)*randn(5,1);
 % randn
 %% 魔方矩阵
 magic(5);
 %% Hilbert矩阵
 hlib(4);  % 1/(i+j)
 %% Toeplitz矩阵
 toeplitz(1:6);
 
 %% 矩阵和向量的运算
 A = [1 0 0 0 ;3 1 0 0;-5 2 1 0; 7 03 2 1];
 B = [1 2 3 4; 2 3 4 5; 3 4 5 6; 4 5 6 7];
 K = 3;
 A + B ;
 k*A;
 A';
 %% 计算矩阵的行列式
 % 使用det函数
 % 如果矩阵的行列式不为0,那么计算A的逆矩阵
 % 使用inv函数
 det(A);
  % 向量可以看成1*n的矩阵或者n*1的矩阵,因此向量的加法和数乘等运算和矩阵是一样的
  %内积运算:
  %计算向量a和b的内积,使用内积定义为(a,b)=bHa
  % 其中 a和b的向量为
  a = [1+5i,2,3+6i,7-2i];
  b = [2-i,4+3i,3-i,6];
  s = sum(conj(b).*a); % b的共轭内积乘以a
  S= a*b';
  s = dot(b,a)
  
  %% 线性方程组的求解
  A= [1, 2, 3;1 ,4 9; 1 8 27];
  b = [5,-2, 6]'
  x = inv(A)*b
  x = A\b
  
  %% 矩阵的相似性化简和分解
  A = [0 3 3; -1 8 6; 2 -14 -10];
  jordan(A)
 % 相似变换矩阵??
 A = [1 0 i;0 2 0; -i 0 1];
 eig(A)
 [E D] = eig(A)
 
 
 %% 范数
% 范数运算,包括1 范数, 2 范数和无穷范数以及f函数,使用norm函数
A = [0 3 3; -1 8 6; 2 -14 -10];
norm(A,1)
norm(A,2)
norm(A,inf)
norm(A,'fro')
%% 函数矩阵分析
% 计算函数矩阵A(x)的一阶和二阶导数,其中A(x)为:
%A(x) = [ sinx ,e^x 1; cosx x^2+1 lnx]
syms x %符号
A = [sin(x) exp(x) 1; cos(x) x^2 log(x)];
diff(A)
%%矩阵函数
A = [0 1; 0 -2];
expA = funm(A,@exp);
expA = expm(A);
sinA = funm(A,@sin);
cosA = funm(A,@cos);
%% M 文件
% 分类
    % 命令文件(脚本文件,Script File)
    % 函数文件 (Function File)
% 区别
    % 命令文件没有输入,没有返回;
    % 命令文件可以对工作空间的变量操作,结果返回工作空间,而函数文件中的变量为局部变量,函数执行完毕,变量被清除;
    % 命令文件可以直接运行,函数文件见需要调用的形式运行(除了特殊的函数文件之外).
% 建立和打开
    %file 
    %edit脚本语言
%% 程序控制顺序--顺序
% 按照代码顺序执行,即顺序结构,受控于代码前后位置;
% 使用顺序结构中的输入和输出(命令交互)
% disp 函数  显示字符串和变量
disp('This is a disp function utilization!')
pause(3) % 程序暂停
%% 程序控制结构--分支
% 分支结构, 又称之为选择结构,包括if分支,switch分支和try分支;
% 单分支条件
A = input('inout A');
if A > 10
    disp(A);
end

% 双分支if语句
% x = 0:0.1:10;
% y = cos(x(find(x<10)));
x = input('x');
if x>10 
    y = log(x);
else 
    y = cos(x);
end 

% 多分支if语句
c = input('input a character!', 's');
if c >= 'A' & c <= 'Z'
    disp(char(abs(c)+abs('a')-abs('A')));
elseif c >= 'a' & c <='z'
    disp(char(abs(c)-abs('a')+abs('A')));
elseif c>='0' & c<='9'
    disp(c);
end

% switch 分支语句
price = input('input price');
switch fix(price/100)
    case {0,1}
        rate = 0;
    case {2,3,4}
        rate = .03;
    case {5,6,7,8,9}
        rate = 0.1;
    otherwise
        rate = .1;
end 
% try 分支
% 语法
% try
    % 语句1
% catch
     % 语句2
% end
%% 循环语句
% 按照给定的条件,执行重复语句
% 包括for语句和while语句
% for循环
A= 1:100;
sumA = 0;
for k= 1:100
    sumA = sumA+A(k);
end

% while 循环
while 1
    c = input('input a character' ,'s');
    if isempty(abs(c));
        break;
    end
end

    
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值