特別感謝
B站作者@基山督的 視頻及源代碼
心形函數1
clc %clc:清除命令窗口的內容,對工作環境中的全部變量無任何影響
clear all; %clear all:清除工作空間的所有變量,函數,和MEX文件
close all; %close all:關閉所有的Figure窗口
hn=figure('name','春心蕩漾','MenuBar','None'); %產生一個窗口,名字是春心蕩漾,並且沒有菜單欄
set(hn,'color','w'); %將背景設爲白色
for n=1:100 %循環100次
cla %即清除當前圖形中的當前活動軸。其他軸不受影響。
t=num2str(n);%把n轉化爲字符串
Lf1='(-x)^(2/3)+(0.9*(3.3-(-x)^2)^0.5)*sin(';
Lf2='*pi*(-x))';
Left=[Lf1,t,Lf2]; %左側的函數
ezplot(Left); %一維繪圖函數
hold on %在作用下一幅圖像時保留已有圖像
Rf1='x^(2/3)+(0.9*(3.3-x^2)^0.5)*sin(';
Rf2='*pi*x)';
Right=[Rf1,t,Rf2]; %這樣分開處理目的是通過t的變化產生動畫效果
%左右兩側函數是一樣的,只是將變量對稱
ezplot(Right); %右側的函數
hold on
axis([-2 2 -1.5 2.5]); %座標軸範圍
axis off %取消對座標軸的一切設置
drawnow; %刷新一下 產生動畫效果
title('春心蕩漾')
end
心形函數2
clc
clear all;
close all;
x1=-3:0.01:0;
x2=0:0.01:3;%確定自變量的範圍
hn=figure('name','春心蕩漾','MenuBar','None');
set(hn,'color','w');
for t=1:50
cla
eval('yleft=(-x1).^(2/3)+(0.9*(3.3-(-x1).^2).^0.5).*sin(t*pi*(-x1));');
%yleft=(-x1).^(2/3)+(0.9*(3.3-(-x1).^2).^0.5).*sin(t*pi*(-x1));
%或者直接計算函數
eval('yright=x2.^(2/3)+(0.9*(3.3-x2.^2).^0.5).*sin(t*pi*x2);');
%eval函數可以直接把字符串當作命令執行,直接算出左邊函數和右邊函數的值
plot(x1,yleft,'*r',x2,yright,'*r'); %*r是控制顏色(詳見顏色對照表),的組成心的符號(+、-、*\:)
axis([-1.8 1.8 -1.5 2.5]);
axis off; %去除座標
pause(0.1); %用暫停形成動畫效果
title('跳動的心'); %刷新
end
clc;
知識點
figure(…)函數的一些用法
第一種用法最簡單
它創建一個窗口,其各種屬性都是使用默認設置。例如它創建的窗口立即成爲當前窗口,並顯示在其它窗口之上。直到新的窗口被創建或者其它窗口被喚醒(called)。
第二種用法
figure(‘PropertyName’,propertyvalue,…),則可以指定某些屬性。
例如:
- “Name”屬性,則可以指定該窗口的標題。 “Position”屬性則指定窗口的大小和位置:
- figure(‘Position’,[600, 300, 300, 200]);
其中屬性值爲一個四元數組 rect = [left,bottom, width, height],第一、二個參數表示窗口位置,都是從屏幕的左下角計算的。 - 'MenuBar’指菜單欄:none則代表沒有菜單欄。
第三種用法
figure(h),則根據參數 h 的不同而表現不同。
如果 h 是先前一個窗口的句柄(handle),則figure(h)相當於喚醒了該窗口,使得該窗口爲當前窗口;
如果 h 並不是某個窗口的句柄,但它是一個整數,則 figure(h)
創建一個句柄爲 h 的新窗口。
最後一種用法
h= figure(…),相當於前面三種用法中在創建一個窗口的同時,返回該窗口的句柄。
註釋:句柄:句柄是matlab語言獨有的參數,相當於C語言的指針。
句柄分爲多種,如函數柄,對象柄,圖形柄等。
圖形句柄就指一個圖形,在生成圖形時同時得到一代號,如語句 h=plot(x,y),h 就是一個圖形句柄,在後來的某一個地方就可用h代表這個圖,如 set(h,…),對這個圖形進行再設置。
set函數
-
set(Swarmscope,‘EraseMode’,‘xor’,‘MarkerSize’,12)
Swarmscope爲句柄名,'EraseMode’爲句柄圖像的擦拭方式,爲xor,邏輯符號——或者,MarkerSize爲句柄尺寸,大小爲12 -
set(hn,‘color’,‘w’)
將背景色設爲白色
num2str(n)解釋
將n由數字轉化爲字符型
還有其他的見
https://blog.csdn.net/jianxi602/article/details/35569095@流程序中的運動者
ezplot一維繪圖函數
https://blog.csdn.net/mytzs123/article/details/78656072@mytzs123
isosurface等值曲面函數
座標軸的控制函數axis,調用格式如下:
axis([xmin,xmax,ymin,ymax,zmin,zmax])
用此命令可以控制座標軸的範圍.
與axis相關的幾條常用命令還有:
axis auto 自動模式,使得圖形的座標範圍滿足圖中一切圖元素
axis equal 嚴格控制各座標的分度使其相等
axis square 使繪圖區爲正方形
axis on 恢復對座標軸的一切設置
axis off 取消對座標軸的一切設置
axis manual 以當前的座標限制圖形的繪製
drawnow用於刷新屏幕。
將還未處理完的圖像實時的顯示出來,可以理解爲立即執行的plot,變化的plot。
當代碼執行時間長,需要反覆執行plot時,Matlab程序不會馬上把圖像畫到figure上,這時,要想實時看到圖像的每一步變化情況,需要使用這個語句。
eval函數可以直接將字符串當作命令執行