北太天元軟件實現(xiàn)算卦(金錢卦)

% 北太天元軟件 幫大家 算卦( 金錢卦 )
% 你只要撒六輪銅錢,每次輸入一個整數(shù),表示你搖動裝錢罐子的次數(shù)。
% 最后輸出你的卦 和 爻辭
% 例如?乾乾 的爻辭 是 "乾為天"
% 我這兒不是宣傳迷信啊,僅僅是把算卦涉及到到二進制,隨機,一一映射
% 排列(從八卦到64卦) 的東西與大家分享一下
% 西方的天文學(xué)和星占學(xué)實際上也是關(guān)系密切得很,這一點大家應(yīng)該是熟知的,
% 不知道的,可以讀一讀第谷和開普勒的故事。
% 東方的算卦和數(shù)學(xué)以及心理學(xué)其實也是關(guān)系很密切的,
% 感興趣的朋友可以調(diào)研一下。?
x = zeros(1,6);
for i = 1:6
???搖銅錢 = 0;
???搖銅錢 = input(['六輪中的第' num2str(i) '輪---請輸入搖的次數(shù):']);
?銅錢 = mod( fix(搖銅錢) + fix(rand(1,3)*1e6), 2 );
???disp(['第' num2str(i) '次扔銅錢(0表示字面):' num2str(銅錢)])
???三枚銅錢字面的個數(shù)?= sum(find(銅錢 == 0 )) ;
???if( 三枚銅錢字面的個數(shù) == 0 )
????x(i) =???1 ; % 0字三背, 字數(shù)是個偶數(shù),是陽, 老陽, 變卦, 主過去之事
???elseif( 三枚銅錢字面的個數(shù) == 2 )
????x(i) =???1 ; % 2字1背,字數(shù)是個偶數(shù),是陽, 少陽
???elseif( 三枚銅錢字面的個數(shù) == 1 )
????x(i) =???0 ; % 1字2背,字數(shù)是個奇數(shù),是陰, 少陰
???elseif( 三枚銅錢字面的個數(shù) == 3 )
????x(i) =???0 ; % 3字0背,字數(shù)是個奇數(shù),是陰, 老陰, 主卦,主未來之事
???end
end
[內(nèi), 外, 卦辭] = 算卦(x);
disp([內(nèi), 外 , ':', 卦辭])
function?[gua] = 陰陽變換到卦(n1,n2,n3)
% 由三爻得一卦,輸入每爻的陰陽
%輸出八卦(后天八卦):
% 1表示陽 0表示陰
% 乾一(111)、兌二(讀音dui4 011)、離三(101)、
% 震四(001)、巽五(讀音xun4 101)、坎六、艮七(讀音gen4 010)、坤八(000)
%陽爻時n為1,陰爻時n為0
% 例如 111 (陽陽陽) --> 乾一????
gua = 1+(~n3) + (~n2)*2 +(~n1)*4;??% ~1 得0, ~0 得 1
end
function [內(nèi), 外, name] = 斷卦(內(nèi)卦,外卦)
% 由起卦所得內(nèi)外卦,輸出全卦
%乾一、兌二、離三、震四、巽五、坎六、艮七、坤八
if?內(nèi)卦<0?||?內(nèi)卦>8 || 外卦<0 || 外卦 >8
???disp('內(nèi)外卦都需要在0-8之間\n');
???exit;
end
gua_list = {
????????'乾為天','天澤履','天火同人','天雷無妄','天風(fēng)姤','天水訟','天山遁','天地否';
????????'澤天夬','兌為澤','澤火革','澤雷隨','澤風(fēng)大過','澤水困','澤山咸','澤地萃';
????????'火天大有','火澤睽','離為火','火雷噬嗑','火風(fēng)鼎','火水未濟','火山旅','火地晉';
????????'雷天大壯','雷澤歸妹','雷火豐','震為雷','雷風(fēng)恒','雷水解','雷山小過','雷地豫';
????????'風(fēng)天小畜','風(fēng)澤中孚','風(fēng)火家人','風(fēng)雷益','巽為風(fēng)','風(fēng)水渙','風(fēng)山漸','風(fēng)地觀';
????????'水天需','水澤節(jié)','水火既濟','水雷屯','水風(fēng)井','坎為水','水山蹇','水地比';
????????'山天大畜','山澤損','山火賁','山雷頤','山風(fēng)蠱','山水蒙','艮為山','山地剝';
????????'地天泰','地澤臨','地火明夷','地雷復(fù)','地風(fēng)升','地水師','地山謙','坤為地';
????????};
???八卦 = { '乾','兌','離','震','巽','坎','艮','坤'};
???內(nèi) =?八卦{內(nèi)卦};
???外 =?八卦{外卦};
???name = gua_list{內(nèi)卦,外卦};
end
%三錢筮法MATLAB實現(xiàn)
%起卦:三枚銅錢,共搖六次;
function [內(nèi), 外, guaci] = 算卦(number)
???c1 = number(1);
???c2 = number(2);
???c3 = number(3);
???c4 = number(4);
???c5 = number(5);
???c6 = number(6);
???[內(nèi), 外, guaci] = 斷卦(陰陽變換到卦(c1,c2,c3),陰陽變換到卦(c4,c5,c6));
end