北太天元软件实现算卦(金钱卦)

% 北太天元软件 帮大家 算卦( 金钱卦 )
% 你只要撒六轮铜钱,每次输入一个整数,表示你摇动装钱罐子的次数。
% 最后输出你的卦 和 爻辞
% 例如 乾乾 的爻辞 是 "乾为天"
% 我这儿不是宣传迷信啊,仅仅是把算卦涉及到到二进制,随机,一一映射
% 排列(从八卦到64卦) 的东西与大家分享一下
% 西方的天文学和星占学实际上也是关系密切得很,这一点大家应该是熟知的,
% 不知道的,可以读一读第谷和开普勒的故事。
% 东方的算卦和数学以及心理学其实也是关系很密切的,
% 感兴趣的朋友可以调研一下。
x = zeros(1,6);
for i = 1:6
摇铜钱 = 0;
摇铜钱 = input(['六轮中的第' num2str(i) '轮---请输入摇的次数:']);
铜钱 = mod( fix(摇铜钱) + fix(rand(1,3)*1e6), 2 );
disp(['第' num2str(i) '次扔铜钱(0表示字面):' num2str(铜钱)])
三枚铜钱字面的个数 = sum(find(铜钱 == 0 )) ;
if( 三枚铜钱字面的个数 == 0 )
x(i) = 1 ; % 0字三背, 字数是个偶数,是阳, 老阳, 变卦, 主过去之事
elseif( 三枚铜钱字面的个数 == 2 )
x(i) = 1 ; % 2字1背,字数是个偶数,是阳, 少阳
elseif( 三枚铜钱字面的个数 == 1 )
x(i) = 0 ; % 1字2背,字数是个奇数,是阴, 少阴
elseif( 三枚铜钱字面的个数 == 3 )
x(i) = 0 ; % 3字0背,字数是个奇数,是阴, 老阴, 主卦,主未来之事
end
end
[内, 外, 卦辞] = 算卦(x);
disp([内, 外 , ':', 卦辞])
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 [内, 外, name] = 断卦(内卦,外卦)
% 由起卦所得内外卦,输出全卦
%乾一、兑二、离三、震四、巽五、坎六、艮七、坤八
if 内卦<0 || 内卦>8 || 外卦<0 || 外卦 >8
disp('内外卦都需要在0-8之间\n');
exit;
end
gua_list = {
'乾为天','天泽履','天火同人','天雷无妄','天风姤','天水讼','天山遁','天地否';
'泽天夬','兑为泽','泽火革','泽雷随','泽风大过','泽水困','泽山咸','泽地萃';
'火天大有','火泽睽','离为火','火雷噬嗑','火风鼎','火水未济','火山旅','火地晋';
'雷天大壮','雷泽归妹','雷火丰','震为雷','雷风恒','雷水解','雷山小过','雷地豫';
'风天小畜','风泽中孚','风火家人','风雷益','巽为风','风水涣','风山渐','风地观';
'水天需','水泽节','水火既济','水雷屯','水风井','坎为水','水山蹇','水地比';
'山天大畜','山泽损','山火贲','山雷颐','山风蛊','山水蒙','艮为山','山地剥';
'地天泰','地泽临','地火明夷','地雷复','地风升','地水师','地山谦','坤为地';
};
八卦 = { '乾','兑','离','震','巽','坎','艮','坤'};
内 = 八卦{内卦};
外 = 八卦{外卦};
name = gua_list{内卦,外卦};
end
%三钱筮法MATLAB实现
%起卦:三枚铜钱,共摇六次;
function [内, 外, guaci] = 算卦(number)
c1 = number(1);
c2 = number(2);
c3 = number(3);
c4 = number(4);
c5 = number(5);
c6 = number(6);
[内, 外, guaci] = 断卦(阴阳变换到卦(c1,c2,c3),阴阳变换到卦(c4,c5,c6));
end