在运用主成分分析法解决问题时,会求解出很多冗长但不复杂的公式,如下图所示的多元一次公式,而且每个系数都是很多位的小数,一个个打出来还是很无聊的。借用MATLAB的字符串拼接可以很简单地写出来。
输入
假设求得的参数如下,想得到的公式为
F1 = 0.255X1 + 0.419X2 + ……-0.401X10
将下表中除第一行以外的文本复制粘贴到空白的txt文本中并保存为’gongshi.txt’,作为代码的数据来源。如果觉得麻烦也可以直接从excel导入。
MATLAB代码
下面是实现的代码
data = importdata('gongshi.txt');%保存好的文本数据 a = data.data;%所有的参数 b = data.textdata;%所有的字母变量 a = string(a);%转换为字符串格式 b = string(b); [m,n] = size(a);%m为每个公式中的变量个数,n为公式个数 c = []; for i=1:n d = ''; for j=1:m if contains(a(j,i),'-')%判断是否含有减号 d = strcat(d,a(j,i),b(j)); else d = strcat(d,'+',a(j,i),b(j));%添加加号 end end c = [c;d] end
123456789101112131415161718最后输出的c就是拼接好的公式了,因为是字符串格式,所以前后带有双引号,而且最前面可能会多出一个加号,但是删除这些不过是举手之劳。
c =
"+0.255X1+0.419X2-0.289X3+0.438X4-0.396X5+0.151X6+0.049X7+0.242X8-0.287X9-0.401X10" "-0.146X1-0.187X2+0.431X3-0.106X4-0.28X5+0.488X6-0.454X7+0.28X8-0.364X9+0.118X10" "+0.643X1+0.005X2+0.198X3+0.067X4+0.104X5-0.363X6-0.541X7+0.226X8+0.238X9+0.006X10" "+0.262X1-0.114X2+0.236X3-0.121X4+0.074X5+0.344X6+0.548X7+0.529X8+0.371X9-0.078X10" "-0.338X1-0.021X2-0.059X3-0.164X4+0.154X5-0.542X6+0.066X7+0.639X8-0.34X9-0.093X10" 12345
写入Word
将输出结果复制到word中,删去多余的符号,添加好前面的’F1='等因变量,在放到mathtype里面,就大功告成了。