目次
ステートメントの後に ; を追加すると、プログラムの実行中に、変更された行の演算結果がコマンド ライン ウィンドウに表示されなくなります。
コンパクト形式: % 出力行間隔はコンパクト モードに設定されます
フォーマット ルーズ: % デフォルトのルーズ モードに復元します
format
関数の設定は現在の MATLAB セッションの出力行間隔にのみ影響し、実際のデータや変数は変更されないことに注意してください。また、この設定はグラフィックスやその他のコマンド ライン以外の出力には影響しない場合があります。
1.ヘルプコマンド
2. データ型
%% 独占一行的注释
% 普通注释
clear all 删除所有变量
clc 删除命令行窗口内容
变量命名规则:区分大小写;长度不超过63
10/3=3.3333 /是真除法
abs('a') %输出97 单引号表示字符
abs('ab') %输出97 98
char(97) %输出'a'
num2str(97) %输出'a'
length('adjkasnjfka') #输出的是字符串长度
A=[1 2 3;4 5 6;7 8 9] %定义矩阵
B=A' %转置
C = A(:) %竖向拉长
D = inv(A) %逆矩阵(必须时方阵才能求逆矩阵)
A * D (相当于A×A的逆)
在MATLAB中,可以使用inv函数或者det函数来判断一个矩阵是否可逆。
·inv函数用于计算矩阵的逆。如果一个矩阵是可逆的,inv函数将返回该矩阵的逆矩阵。如果矩阵不可逆(奇异矩阵),inv函数将引发一个异常。
·det函数用于计算矩阵的行列式。如果一个矩阵的行列式不等于零,则说明该矩阵是可逆的;如果行列式等于零,则说明该矩阵是不可逆的。
E = zeros(10,5,3) 创建一个10行5列3维的全0矩阵
E(:,:,1) = rand(10,5) %rand生成均匀分布的伪随机数。分布在(0~1)之间
rand(m,n,‘double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’
rand(): [0,1) の 10 進数を生成します。
rand(m):ランダムな小数で埋められた m X m の正方行列を生成します。
rand(m,n):ランダムな小数で埋められた m X n の行列を生成します。
rand(m,n,p):ランダムな小数で埋められた m X n X p の行列を生成します。
a+(ba)*rand(): [b,a] 間隔 10 進数
'double' および 'single':データ型を指定し、rand の最後のパラメータ位置に配置します。
randi は生成された整数で、rand は [0,1] の 10 進数です。
randi(iMax): [0, iMax] の整数を生成します。
randi(iMax,m): m X m の正方行列、値間隔 [0,iMax] を生成します。
randi(iMax,m,n): m X n の行列、値の範囲 [0,iMax] を生成します。
randi(iMax,m,n,p,...):以下はすべて次元 m X n X p X ...
randi([iMin,iMax],m,n): m X n の行列、値間隔 [iMin, iMax] を生成します。
randn(m): m×m
randn(m,n): m X n
randn(m,n,p): m X n X p
· [iMin, iMax] を指定できるのは randi だけであり、rand も randn も指定できません。
· randi は整数を生成し、rand と randn は小数を生成します。
· randn は次元のみを指定できます。
3. セル配列と構造
セル配列: MATLAB における一意のデータ型です。配列の一種です。その内部要素はさまざまなレイアウト タイプに属することができます。概念的な理解の観点からは、C 言語の構造および C++ のオブジェクトと考えることができます。 . 非常によく似ています。cell 配列は MATLAB の特徴的なデータ型であり、他のデータ型 (文字型、文字配列や文字列、一般的な算術データや配列など) とは異なります。その特徴は、ユーザーに情報を問い合わせているような感覚を与え、すべての変数が基本的なデータ情報に変換されるまで徐々に追跡できる独自のデータ アクセス方法によって決まります。そのクラス関数の出力は cell (cell) です
Cell 配列
A = cell(1,6) %Define
A{2} = eye(3) %Matlab バージョン 2021 より前の添え字は 1 から始まります
A{5} = magic(5) %Magic cube: 行列は水平です、縦または斜めの 3 方向の数の和は常に同じ
B = A{5}
構造
定義はカンマで区切られていることに注意してください。アクセスするときはドットを使用してください。
>> books=struct('name',{ {'Machine Learning','Data Mining'}},'price',[30,40]) books = 包含以下字段的 struct: name: {'Machine Learning' 'Data Mining'} price: [30 40] >> books.name ans = 1×2 cell 数组 'Machine Learning' 'Data Mining' >> books.price ans = 30 40 >> books.name(1) ans = cell 'Machine Learning' >> books.name{1} ans = Machine Learning
4.行列演算
4.1 マトリックスの定義と構築
>> A=[1,2,3,4,5,6,7,8,9]%直接定义矩阵
A =
1 2 3 4 5 6 7 8 9
>> B=1:2:9 %第二个参数为步长,不可缺省,[1,9]包含最后一个数值
B =
1 3 5 7 9
>> C = repmat(B,3,2) %重复执行3行2列
C =
1 3 5 7 9 1 3 5 7 9
1 3 5 7 9 1 3 5 7 9
1 3 5 7 9 1 3 5 7 9
>> D = ones(2,4) %生成一个2行4列的全1矩阵
D =
1 1 1 1
1 1 1 1
4.2 行列の四則演算
>> A = [1 2 3 4; 5 6 7 8]
A =
1 2 3 4
5 6 7 8
>> B = [1 1 2 2; 2 2 1 1]
B =
1 1 2 2
2 2 1 1
>> C=A+B %对应位置相加
C =
2 3 5 6
7 8 8 9
>> C=A*B' %'是转置符号
C =
17 13
41 37
>> C=A'*B
C =
11 11 7 7
14 14 10 10
17 17 13 13
20 20 16 16
>> A
A =
1 2 3 4
5 6 7 8
>> B
B =
1 1 2 2
2 2 1 1
>> A.*B %对应位置相乘
ans =
1 2 6 8
10 12 7 8
>> A./B %对应位置相除
ans =
1.0000 2.0000 1.5000 2.0000
2.5000 3.0000 7.0000 8.0000
>> G = A / B %相当于A*B的逆 G*B = A G*B*pinv(B) = A*pinv(B) G = A*pinv(B),相当于A乘B
G =
1.8333 -0.1667
3.1667 1.1667
>> A * inv(B)
错误使用 inv
矩阵必须为方阵。
>> A * pinv(B) %pinv可以不是方阵
ans =
1.8333 -0.1667
3.1667 1.1667
4.3 行列の添字
>> A=magic(5)
A =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> A(2,3) %矩阵坐标从1开始数,访问第二行第二列元素
ans =
7
>> A(2,:) %访问第二行所有元素
ans =
23 5 7 14 16
>> A(:,3) %访问第三列所有元素
ans =
1
7
13
19
25
>> find(A>20) %返回的是大于20的元素的下标,竖着数
ans =
2
6
15
19
23
>> A(6)
ans =
24
5. プログラムの構造
5.1 for ループ構造
>> sum=0;
>> for i=1:5
sum=sum+i*i;
end
>> sum
sum =
55
sum=0;
for i=1:5
cur=1;
for j=1:i
cur=cur*j;
end
sum=sum+cur;
end
disp(sum); %153
%打印九九乘法表
for i=1:9
for j=1:i
a(i,j)=i.*j;
end
end
disp(a);
>> test01
1 0 0 0 0 0 0 0 0
2 4 0 0 0 0 0 0 0
3 6 9 0 0 0 0 0 0
4 8 12 16 0 0 0 0 0
5 10 15 20 25 0 0 0 0
6 12 18 24 30 36 0 0 0
7 14 21 28 35 42 49 0 0
8 16 24 32 40 48 56 64 0
9 18 27 36 45 54 63 72 81
5.2 ブランチ構造
7. 描画の基本操作
7.1. 二次元平面図
x=0:0.01:2*pi;
y=sin(x);
figure; %建立一个幕布
plot(x,y);
title('y=sin(x)');
xlabel('x');
ylabel('y');
xlim([0 2*pi]); %设置x坐标值的范围
x=0:0.01:20;
y1=200*exp(-0.05*x).*sin(x);
y2=0.8*exp(-0.5*x).*sin(10*x);
figure;
[AX,H1,H2]=plotyy(x,y1,x,y2,'plot');%共用一个x的坐标系,在y上有两个不同的取值
%设置相应的标签
set(get(AX(1),'Ylabel'),'String','Slow Decay');
set(get(AX(2),'Ylabel'),'String','Fast Decay');
xlabel('Time(\musec)');
title('Multiple Decay Rates');
set(H1,'LineStyle','--','Color','b');
set(H2,'LineStyle',':','Color','k');
6.2 3D ステレオ描画
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
xlabel('sin(t)');
ylabel('cos(t)');
zlabel('t');
%hold on
%hold off %不保留当前操作
grid on;%把图片绘制出来,加一些网格线
axis square %使整个图(连同坐标系)呈方块
ホールドオンとは、現在の軸と画像が更新されずに保持され、後で描画されるグラフィックスを受け入れる準備ができており、複数のグラフィックスが共存することを意味します。つまり、グラフィックスのホールド機能がアクティブになり、現在の座標軸とグラフィックスが保持されます。が維持され、以降描画されるグラフィックスはこのグラフィックスに追加され、座標軸の範囲が自動的に調整されます。
Hold offでは、現在の軸とイメージが更新されなくなり、新しいイメージが表示されると、元のイメージがキャンセルされます。つまり、グラフホールド機能をオフにします。
hold on とhold offは比較的よく使われます。
7. グラフィックの保存とエクスポート
matlab によって生成された画像がスクリーンショットによって直接インターセプトされると、画像の鮮明さが影響を受けます。したがって、次の方法を使用してグラフィックを保存およびエクスポートすることをお勧めします。
1) 図に示すように
2) 編集→コピーオプション
調整可能な対応する要素
3) 編集→図のプロパティ
4) ファイル → 設定のエクスポート
幅や高さなどのピクセル値の属性を調整することで、画像が小さくても文字を鮮明に表示できます。
Matlab の基本的な部分はこれで終わりです。少し追加してみましょう~
8. 補足
[x,y,z] = peaks(30); %peaks命令用于产生双峰函数或者是用双峰函数绘图
mesh(x,y,z)
grid
>> ピーク
z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.
^ 3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3
*exp(-(x+1).^2 - y.^2)