% Matlab創建有價值歷史紀錄(完整版)
% “%”為注釋符
% MATLAB
% MATLAB是一種科學計算語言。它集成了計算,可視化和編程于一個易用的環境中,在此環境下,問題和解答都表達為我們熟悉的數學符號。典型的應用有:
% * 數學和計算
% * 算法開發
% * 建模,模擬和原形化
% * 數據分析,探索和可視化
% * 科學與工程制圖
% * 應用開發,包括圖形用戶界面的建立
%“MATLAB”代表MATrix LABoratory(矩陣實驗室)。MATLAB最初是編寫來提供給對由LINPACK和EINPACK工程開發的矩陣軟件簡易訪問的。今天,MATLAB使用由LAPACK和ARPACK工程開發的軟件,這些工程共同表現了矩陣計算軟件中的技術展。
%
%Matlab是一種高水平的矩陣/數組語言,含有控制流語句,函數,數據結構,輸入/輸出,和面向對象編程特征。它允許“小型編程”以迅速創立快速拋棄型程序,以及“大型編程”以創立完整的大型復雜應用程序。

%MATLAB是一個交互式的系統,其基本數據元素是無須定義維數的數組。這讓你能解決很多技術計算的問題,尤其是那些要用到矩陣和向量表達式的問題。而要花的時間則只是用一種標量非交互語言(例如C或Fortran)寫一個程序的時間的一小部分。
%
% MATLAB已經與許多用戶輸入一同發展了多年。在大學環境中,它是很多數學類、工程和科學類的初等和高等課程的標準指導工具。在工業上,MATLAB是高產研究、開發和分析所選擇的工具。
%
% MATLAB以一系列稱為工具箱的應用指定解答為特征。對多數用戶十分重要的是,工具箱使你能學習和應用專門的技術。工具箱是是MATLAB函數(M-文件)的全面的綜合,這些文件把MATLAB的環境擴展到解決特殊類型問題上。具有可用工具箱的領域有:信號處理,控制系統神經網絡,模糊邏輯,小波分析,模擬等等。
%
%MATLAB數學函數庫匯集了大量計算的算法,范圍從初等函數如:求和,正弦,余弦和復數的算術運算,到復雜的高等函數如:矩陣求逆,矩陣特征值,貝塞爾(Bessel)函數和快速傅立葉變換等。
% clear % 清除所有變量
clc % 清除命令窗口
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
% + ++++Matlab一些基本操作++++++++++++++++++++++++++++++++
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
help clc % clc的幫助文件,后接文件名則調出關于該函數過程的幫助內容
what % M、MAT、MEX 文件的目錄列表
which mean % 該函數和文件的路徑
eval('1+2*5+pi') % 執行由MATLAB 表達式構成的字串
clock % 掛鐘
date % 日歷
% etime % 計時函數
tic % 秒表開始計時
toc % 計時函數
cputime % CPU 時間(以秒為單位)
% eps % 相對浮點精度,好像一個常數似的=2.2204e-016,不知道跟機子有無關
realmax % 最大浮點數
realmin % 最小浮點數
inf % 無窮大
nan % 非數值
% 顯示字符超鏈接
disp('<a href="matlab:magic(4)">Generate magic square</a>')
% cd % 當前工作目錄,改變當前工作目錄
dir % 當前目錄下的文件列表
% getenv('OS') % 獲取環境變量值,這里是獲取操作系統的信息
computer % 計算機類型
% hostid % MATLAB 主服務程序的識別代號
% ver % 版本信息
version % MATLAB 版本號
%
% 執行DOS 操作系統命令
!cd
%
% type mean % 列出M 文件內容,work中必須有該文件
% lookfor mean % 通過help 條目搜索關鍵字,由于執行速度慢,故注釋掉
% doc mean % 裝入超文本說明,載入幫助,由于要彈出幫助文檔,故注釋掉
% disp('<a href="matlab:doc mean">to Mean Help</a>')
% flops % 浮點運算次數
% nargin % 函數輸入變量數
% nargout % 函數輸出變量數
% why % 簡明的答案(我沒有明白什么意思)
%
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
% + 2 ++++輸入一些測試數據++++++++++++++++++++++++++++++++++
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
format long % 格式化顯示為長字
%
% 輸入矩陣,“,”與空格等價,“;”為換行,即行的終點
% 用Matlab函數和內置常量產生
m=magic(3) % 魔方矩陣
p=pi % 圓周率
o=zeros(2,5) % 零矩陣
one=ones(2,5) % 全“1”矩陣
yi=eye(3) % 單位矩陣
rd=rand % 均勻分布的隨機數矩陣
rn=randn % 正態分布的隨機數矩陣
%
% 筆者輸入的一些矩陣,下面將用到它們
%
v=[11,12,0,14;0,22,23,24;31,0,33,34]
w=[0:7:30]; % 矩陣后的分號使得該矩陣隱藏顯示
x=[11 12 13 0;
0 22 23 0;
31 0 33 0;
5.123456789 -5 6 0]
x1=[4,3,0] % 創建兩個向量
x2=[-3,4,0]
y=4+i+2*j % i,j為虛數單位
z=-6.818;
q=[z,pi,5.51,v(end)] % v(end)取v矩陣的最后一個數
format short
q' % “'”為轉置
%
% 變量名、存儲變量、刪除變量、裝載變量
%
who % 列出工作區中所有變量名
whos % 列表顯示工作區中所有變量具體信息
exist a % 檢查a變量或函數是否存在,是為1,否為0
save allval % 保存變量為allval.mat,也可空格接變量名保存指定的變量
save valtxt.txt -ascii% 保存變量為valtxt.txt
clear % 從內存中清除變量和函數,后可以接變量名
load('allval.mat') % 從磁盤文件中恢復變量
delete('allval.mat') % 刪除文件allval.mat
%
% ++++++++++++++++++++++++++++++++++++++++++++++++++
% + 3 ++++矩陣++++++++++++++++++++++++++++++++++++++
% ++++++++++++++++++++++++++++++++++++++++++++++++++
%
% 除了知道魔方陣和范德蒙矩陣外,別的都不太清楚,故而注釋掉
% compan % 友矩陣,“未*”
% hadamard % Hadamard 矩陣,“未*”
% hankel % Hankel 矩陣,“未*”
% hilb % Hilbert 矩陣,“未*”
% invhilb % 逆Hilbert 矩陣,“未*”
% magic % 魔方矩陣
% toeplitz % Toeplitz 矩陣,“未*”
% vander % Vandermonde 矩陣,“未*”
% cond % 計算矩陣條件數,“未*”
% norm % 計算矩陣或向量范數,“未*”
% rcond % Linpack 逆條件值估計,“未*”
%
% 3.1 矩陣的計算、排列和旋轉=======
%
det(m) % 計算矩陣行列式值
sum(m) % 對m矩陣求和
min(m) % m矩陣每列的最小數
max(m) % m矩陣每列的最大數
[s,id]=sort(m) % 升序排列m矩陣,排列后賦給s,原址賦給id
% sortrows % 按升序排列行
diag(w) % 建立和提取對角陣
fliplr(x) % 矩陣作左右翻轉
flipud(x) % 矩陣作上下翻轉
rot90(v) % 矩陣旋轉90 度
% ' % 矩陣的轉置
reshape(v,2,6) % 改變矩陣大小
tril(v) % 提取矩陣的下三角部分
triu(v) % 提取矩陣的上三角部分
any(x) % 向量的任一元為真,則其值為真
all(x) % 向量的所有元為真,則其值為真
find(w) % 找出x的非零元素的索引號
%
% 3.2 矩陣性質===============
%
rank(m) % 計算矩陣秩
trace(m) % 計算矩陣的跡
eig(m) % 求特征值和特征向量
poly(m) % 求特征多項式
hess(m) % Hessberg 形式
% qz % 廣義特征值,“未*”
null(x) % 零矩陣
orth(x) % 正交化
pinv(m) % 矩陣偽逆
%
% 3.3 矩陣分解===============
%
X = pascal(5) % 帕斯卡矩陣
chol(X) % Cholesky 分解
lu(m) % 高斯消元法求系數陣
inv(m) % 矩陣求逆
qr(m) % 正交三角矩陣分解(QR 分解)
schur(x) % Schur 分解
% gdf2rdf % 變復對角矩陣為實分塊對角形式,“未*”
% balance % 矩陣均衡處理以提高特征值精度,“未*”
%
%
corrcoef(v) % 計算互相關系數
cov(x) % 計算協方差矩陣
geomean(v) % 計算樣本的幾何平均值
harmmean(m) % 計算樣本數據的調和平均值
iqr(v) % 計算樣本的四分位差
kurtosis(v) % 計算樣本的峭度
mad(v) % 計算樣本數據平均絕對偏差
mean(m) % 計算樣本的均值
median(m) % 計算樣本的中位數
range(x) % 樣本的范圍
skewness(v) % 計算樣本的歪度
std(v) % 計算樣本的標準差
var(v) % 計算樣本的方差
% moment % 計算任意階的中心矩,沒有研究或沒有研究通它的用法下簡稱“未*”
% prctile % 計算樣本的百份位數,“未*”
% trimmean % 計算包含極限值的樣本數據的均值“未*”
%
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
% + 4 ++++數學函數++++++++++++++++++++++++++++++++++++++++++
% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
size(x) % 矩陣x的尺寸
length(x) % 向量x的長度,矩陣的行數
tan([p p/3 p/4 p/6]) % 正切
atan(x) % 反正切
fix(q) % 朝零方向取整,整數部分
floor(q) % 朝負無窮大方向取整
ceil(q) % 朝正無窮大方向取整
round(q) % 朝最近的整數取整
rem(9,4) % 除后取余
sign(z) % 符號函數
factor(210) % 質因子
%
abs(z) % 絕對值
abs(y) % 復數的模
gcd(12,15) % 最大公因數
lcm(12,15) % 最小公倍數
% conv2 % 二維卷積,攝影測量要用到卷積
% conv % 卷積和多項式乘法
%
% 向量 ---〉
%
dot(x1,x2) % 向量點集
cross(x1,x2) % 向量叉集
%
% 復數
real(y) % 復數實部
imag(y) % 復數虛部
angle(y) % 復數的輻角
conj(y) % 共軛復數
%
% 對數指數
exp(m) % e的x次冪
log(m) % e為底的對數
log10(m) % 10為底的對數(也叫常用對數)
sqrt(x) % x的平方根
%
%
% 數據類型轉化===========
%
strx=num2str(x) % 變數值為字符串
mm=int2str(m) % 變整數為字符串
numx=str2num(strx) % 變字符串為數值
%
% 數制轉化
% hex2num % 變十六進制為IEEE 標準下的浮點數
% hex2dec % 變十六制數為十進制數
% dec2hex % 變十進制數為十六進制數
%
% 下面告訴你一個不用查t分布表就可以知道相應值的函數
icdf('t',0.95, % 續行
20) % 自由度為20的t分布95%下分位數,即t分布表中n=20,a=0.05對應的值
icdf('t',1-0.10,8) % 查t分布表中n=8,a=0.10對應的值
%
% 簡單的繪制平面圖
x_ = -pi:.1:pi;
y_ = sin(x_);
plot(x_,y_)
set(gca,'XTick',-pi:pi/2:pi) % 設置X軸的刻度
set(gca,'XTickLabel',{'-pi','-pi/2','0','pi/2','pi'}) % 標定X軸的量數
xlabel('-\pi \leq \theta \leq \pi')
ylabel('y=sin(\theta)')
title('Plot of y=sin(\theta)')
text(-pi/4,sin(-pi/4),'\leftarrow sin(-\pi/4)',
'HorizontalAlignment','left')
set(findobj(gca,'Type','line','Color',[0 0 1]),
'Color','red',
'LineWidth',2)
%
%
figure(2)
t = 0:pi/10:2*pi;
[X_,Y_,Z_] = cylinder(4*cos(t));
subplot(2,2,1); mesh(X_)
subplot(2,2,2); mesh(Y_)
subplot(2,2,3); mesh(Z_)
subplot(2,2,4); mesh(X_,Y_,Z_)
%
%
%
% reply = input('Do you want more? Y/N [Y]: ', 's');
% if isempty(reply)
% reply = 'Y';
% end
%
% 注意:與C語言的switch語句不同的是,MATLAB的switch是不會落空的。
% 如果情形1是真,則其他語句不執行。因此,不需用break語句。
n=input('請您輸入一個正整數:')
if isempty(n)
n = 5
end
switch rem(n,3)
case 0
disp('你輸入的數除以3的余數為:0')
case 1
disp('你輸入的數除以3的余數為:1')
case 2
disp('你輸入的數除以3的余數為:2')
otherwise
error('錯誤!!請檢查數據是否合法')
end
%
%
%


|
|