怎么用matlab画国旗,Matlab考试攻略_国旗题_1.如何用Matlab画法国国旗?
人生最終的價(jià)值在于覺醒和思考的能力。 —— 亞里士多德一直以來,傳道、授業(yè)、解惑是教師最顯著的標(biāo)志。教師的功能就是把人類已有的知識經(jīng)驗(yàn)傳授給年輕一代,使其在較高的起點(diǎn)上發(fā)展。因此,教師作為知識的傳授者不僅要有精深的學(xué)科知識,而且還必須懂得如何傳授知識,是學(xué)科知識和學(xué)科教學(xué)法的雙重專家。
由于科學(xué)技術(shù)的高速發(fā)展,多媒體和網(wǎng)絡(luò)技術(shù)的運(yùn)用拓展了人們獲取知識的途徑,教師作為唯一信息源的作用日趨減少。教師不能再把單純的知識傳遞作為教學(xué)的主要任務(wù),而應(yīng)該把學(xué)生形成正確的學(xué)習(xí)態(tài)度、方法以及靈活的知識"遷移"能力作為教學(xué)的主要任務(wù),擔(dān)當(dāng)起學(xué)習(xí)的促進(jìn)者的角色。教師應(yīng)該幫助學(xué)生覺醒,引發(fā)學(xué)生思考,促進(jìn)學(xué)生快速成長,把學(xué)生打造成為可持續(xù)發(fā)展的個(gè)體。
那么,如何運(yùn)用“遷移”來提高學(xué)生在新情境中的問題解決能力?
先提供給學(xué)生一個(gè)學(xué)習(xí)材料,讓學(xué)生建立起"交叉火力"的概念,效果如下圖所示。
在軍事行動(dòng)中,交叉火力(Crossfire)指交戰(zhàn)一方隊(duì)員之間的火力線,兩個(gè)或者多個(gè)火力單位射在陣地上,并不是朝正面射擊,而是左側(cè)單位朝右射擊,右側(cè)單位朝左射擊,這樣就會出現(xiàn)火力的交叉。
然后讓學(xué)生解決一個(gè)新情境下的問題:
通過γ射線可以對病人體內(nèi)的病灶進(jìn)行損傷手術(shù),但是這樣從一個(gè)方向射進(jìn)來的時(shí)候,也會對照射到的正常組織造成損傷,該如何解決這個(gè)問題呢?
這個(gè)問題的解決需要將之前的“交叉火力”概念遷移到新的利用射線手術(shù)的新情境中,答案在下圖中不言自明。
這個(gè)部分是用來致敬YH老師的,在本科一年級,就在普通心理學(xué)課上給我們講解新情境的問題解決,從此愛上了這個(gè)地方——魔法心理學(xué)院!
布魯納認(rèn)為,某個(gè)學(xué)科的基本知識結(jié)構(gòu)和學(xué)習(xí)態(tài)度/方法的掌握,不僅便于學(xué)生對教學(xué)內(nèi)容的理解和記憶,而且還有利于學(xué)習(xí)遷移的發(fā)生。他強(qiáng)調(diào),為了便于學(xué)生獲得知識和技能,要注意兩點(diǎn):(1)教材呈現(xiàn)的順序要注意從一般到個(gè)別的不斷分化;(2)教材的知識結(jié)構(gòu)要從已知到未知逐步系統(tǒng)化。
布魯納鼓勵(lì)的是一種探索新情境下問題解決的能力和態(tài)度/方法。比知識本身更具有價(jià)值的是更接近本質(zhì)的概念/原理和get知識的態(tài)度/方法。
Matlab考試的時(shí)候,之所以選擇各國的國旗作為考試主題之一,是因?yàn)?#xff1a;(1)國旗題的可擴(kuò)展性很好,國旗種類繁多,五花八門,具備從一般到個(gè)別的不斷分化,和構(gòu)建從已知到未知的可能;
(2)它可以幫助學(xué)生更好地掌握畫圖和矩陣操作。這一開始的設(shè)定,主要是畫帶長條的國旗,比如法國。
法國國旗呈長方形,寬(Width)和高(Height)之比為3∶2。旗面由三個(gè)平行且相等的豎長方形構(gòu)成,從左到右分別是藍(lán)色、白色和紅色三色。藍(lán)色是圣馬丁長袍的顏色,代表自由;白色是為了紀(jì)念民族英雄圣女貞德,代表平等;以及紅色源自圣但尼軍旗,代表博愛。
法國國旗最早出現(xiàn)在1789年的法國資產(chǎn)階級革命時(shí)期(法國大革命時(shí)期),巴黎國民自衛(wèi)隊(duì)就以藍(lán)、白、紅三色旗為隊(duì)旗。1794年2月15日,旗幟最終被確定為法蘭西第一共和國的國旗。
[1] 圖形窗口機(jī)制可以簡單的用一個(gè)圖來概括:
Root代表屏幕,Figure代表圖形窗口,Axes是坐標(biāo)軸。我們一般會先創(chuàng)建好圖形窗口和坐標(biāo)軸,然后選擇在內(nèi)存中把圖Image的矩陣Matrix準(zhǔn)備好之后,再用imshow函數(shù)畫到坐標(biāo)軸上。
% 清空
clc; clear;
% Root是默認(rèn)的,所以不需要管它。我們直接來創(chuàng)建一個(gè)圖形窗口:
hFigure = figure(1); % 這里的1是圖形窗口的標(biāo)識id,也可以創(chuàng)建圖形窗口2,3,4 ... N;
%這里的100 的意思是,以屏幕左下角為原點(diǎn)確定的x=100和y=100的位置;
% 坐標(biāo)軸
hAxes = axes('parent',hFigure); %當(dāng)坐標(biāo)軸來到這個(gè)世界,首先要確定好它的父對象是誰;
set(hAxes, 'units','pixels', 'position',[0 0 600 400]); % 然后再設(shè)置它的屬性;% 為什么一開始要先設(shè)置 'units'屬性呢?是因?yàn)樽鴺?biāo)軸默認(rèn)的是 normalized或者character,normalized是比例,按照比例來寫應(yīng)該是 [0 0 1 1],或者是 character,這個(gè)是參考字符x設(shè)定的單位。這兩者操作起來都不如pixels像素來得直觀、方便和精確,所以一般這里要把'units'屬性改成'pixels'。位置屬性,設(shè)置成 [0 0 600 400]代表的意思是,以圖形窗口的左下位置為原點(diǎn),寬是600,高是400。
[2] 矩陣知識主要涉及到矩陣的創(chuàng)建和行列的賦值:
賦值涉及到一個(gè)行列的元素標(biāo)識的方法,第一個(gè)參數(shù)是行,如果填寫 : (左邊有一個(gè)冒號)代表的是所有的行;第二個(gè)參數(shù)是列,如果填寫1:200代表從第1列到第200列。
% 圖形矩陣
imgMatrix(:,1:200,1) = 0; % R == 0
imgMatrix(:,1:200,2) = 0; % G == 0
imgMatrix(:,1:200,3) = 1; % B == 1 這樣設(shè)定就是藍(lán)色
imgMatrix(:,201:400,1) = 1; % R == 1
imgMatrix(:,201:400,2) = 1; % G == 1
imgMatrix(:,201:400,3) = 1; % B == 1 白色
imgMatrix(:,401:600,1) = 1; % R == 1
imgMatrix(:,401:600,2) = 0; % G == 0
imgMatrix(:,401:600,3) = 0; % B == 0 紅色
% 把準(zhǔn)備好的圖畫矩陣畫到坐標(biāo)軸上
imshow(imgMatrix, 'parent', hAxes);
在答疑的時(shí)候,我會讓我的某個(gè)學(xué)生畫法國國旗,并且把代碼發(fā)到QQ群里邊,并且故意會問,考試的時(shí)候會考什么國旗?
出題必須有跡可循,這個(gè)是原則!
有的學(xué)生也許已經(jīng)猜到了,考試的時(shí)候,也會畫帶長條的國家的國旗,比如,德國(德國和法國這對冤家),芬蘭(一個(gè)特別神奇的國家,在教育方面奉行尊重教師的個(gè)性和創(chuàng)新),和荷蘭(對生意中的契約的尊崇達(dá)到了極其偏執(zhí)的境界)等。不管是哪個(gè)國家的國旗,內(nèi)容雖然變了,但是考察的核心知識點(diǎn)仍然集中在(1)圖形窗口畫圖 + (2)矩陣行列操作。
比如,我們考試的時(shí)候,出了德國國旗的題目,該如何解答?
德國國旗呈長方形,長寬之比為5:3。旗面自上而下由黑、紅、金三個(gè)平行相等的橫長方形組成。黑紅金為德意志民族所喜愛的顏色。
% 清空
clc; clear;
% 圖形窗口
hFigure = figure(1);
set(hFigure, 'position', [100 100 600 400]);
% 坐標(biāo)軸
hAxes = axes('parent',hFigure);
set(hAxes, 'units','pixels', 'position',[0 0 500 300]); %相比法國國旗,寬和高有改動(dòng)500*300
% 圖形矩陣
imgMatrix = zeros(300,500,3); %相比法國國旗,行和列數(shù)有改動(dòng) 300行 500列
imgMatrix(1:100,:,1) = 0; % R == 0
imgMatrix(1:100,:,2) = 0; % G == 0
imgMatrix(1:100,:,3) = 0; % B == 1 這樣設(shè)定就是黑色
imgMatrix(101:200,:,1) = 1; % R == 1
imgMatrix(101:200,:,2) = 1; % G == 0
imgMatrix(101:200,:,3) = 1; % B == 0 紅色
imgMatrix(201:300,:,1) = 1; % R == 1
imgMatrix(201:300,:,2) = 0.8; % G == 0.8
imgMatrix(201:300,:,3) = 0; % B == 0 金色
% 把準(zhǔn)備好的圖畫矩陣畫到坐標(biāo)軸上
imshow(imgMatrix, 'parent', hAxes);
如果就這樣,把顏色改一改,矩陣操作從豎條(對列進(jìn)行操作)改成橫條(對行進(jìn)行操作),也未免太過簡單了。所以,通常這樣的變化里邊,還會增加一個(gè)知識點(diǎn),就是如何對圖片進(jìn)行保存。這個(gè)知識點(diǎn)又分為3個(gè)小步驟:
(a)給當(dāng)前圖形窗口截屏用的是getframe函數(shù),參數(shù)可以是gcf,也可以是gca;
(b)獲取其中的圖畫矩陣,我們需要借助截屏生成的結(jié)構(gòu)體中的.cdata變量;
(c)保存圖片我們用的是 imwrite函數(shù),參數(shù)是圖畫矩陣,保存圖片的路徑,和保存的格式。
% 給當(dāng)前圖形窗口拍個(gè)快照
hFrame = getframe(gcf); %這里的gcf是get current figure的意思,也就是獲取當(dāng)前的圖形窗口句柄;gca是get current axes的意思,也就是獲取當(dāng)前的坐標(biāo)軸的句柄的意思。由于坐標(biāo)軸的大小撐開跟圖形窗口的大小是一樣的,所以這里getframe不管是對gcf拍照截圖還是對gca拍照截圖,結(jié)果都是一樣的。這么說又是有一小點(diǎn)問題的,因?yàn)橛械臅r(shí)候截圖會出現(xiàn)白邊,我印象中,要想把白邊去掉,圖形窗口的寬和高可以設(shè)置的比坐標(biāo)軸大一些,然后getframe()函數(shù)的參數(shù)填寫gca就可能能解決這個(gè)白邊的問題。
這里得到的hFrame你可以從Matlab命令窗口雙擊看下,它是一個(gè)結(jié)構(gòu)體變量,包含兩個(gè)部分,一個(gè)是hFrame.cdata,另外一個(gè)是hFrame.colormap。我們要的圖片矩陣是前者。
% 獲取當(dāng)前窗口的圖片矩陣
% 獲取當(dāng)前窗口的圖片矩陣
imgFrame = hFrame.cdata;
% 保存圖片矩陣
imwrite(imgFrame, 'GermanyFlag.jpg', 'jpg');
我們來看最后畫出來的效果:)
------
歡迎大家訪問Matlab初學(xué)者教程_目錄_開天辟地:
http://www.oiegg.com/viewthread.php?tid=1903181&page=1&extra=page%3D1%26amp%3Bfilter%3Ddigest#pid18968323
[本帖最后由 psybestwish 于 2017-7-6 08:02 編輯]
總結(jié)
以上是生活随笔為你收集整理的怎么用matlab画国旗,Matlab考试攻略_国旗题_1.如何用Matlab画法国国旗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js 调用后台方法 ajax,JS直接调
- 下一篇: ssb的matlab仿真,单边带调制(S