Category Archives: 个人生活

与专业无关的内容。

Fourier变换(三)

[mathjax]
通过上一篇我们已经学会怎样通过Fourier变换重构应变和应力的波形。至少In/1是已经可以直接用Fourier变换的结果计算了。本文先介结实际实验数据的导入,再继续上一篇的话题介绍如何计算In/1和其余的LAOS参数。

LAOS实验是怎么实施的

我们是在TA ARES-RFS流变仪上做LAOS实验。公司的名字:TA Instruments。这是一台应变控制型流变仪(strain-controlled rheometer),相比之下同公司的AR-G2则是应力控制型(stress-controlled)。这个小册子上介绍了ARES和AR-G2两台流变仪的特点,其中的原理图和具体参数可以用在毕业论文中。进行LAOS实验需要流变仪持续对样品施加正弦应变,我们是利用流变仪控制软件TA Orchestrator 7.2.1自带的测试模式dynamic time sweep来控制流变仪进行这一操作。Dynamic time sweep是固定振荡的应变幅度γ0和频率ω,测量G’G”随时间变化的测试,所以正适合我们。在Orchestrator软件中设定好dynamic time sweep的应变和频率,仪器就会以相应的正弦函数去控制马达了。此时,我们需要马上从仪器背后的模拟输出端口同时读出仪器的测量信号,并用一个数模转换器(analog-to-digital converter, ADC)转换成数字信号,输入到计算机。我们用的ADC是NI USB-9215A,要通过电脑来控制它何时开始和停止采样,以及以多大的采样频率进行采样。许多软件都可以通过它的驱动程序接口来实施控制(MATLAB本身就可以),在LAOS实验中我们用一个LabView开发的工具FT Meassurement来采集数据。因此,我们用一台电脑,用两个软件分而控制不同的过程。Orchestrator控制流变仪的运作,而FT Meassurement控制ADC。这一流程图可参考[1][2]中的用图。具体信号线接法和处理方式见下面的PPT(可下载)。

上篇文章也说过,从流变仪采集到的一个是马达位移的电压信号,另一个是力矩的电压信号,它们都要乘以一个系数,才是应变和应力。从ARES流变仪的说书中可以查到背板输出信号的具体情况:

  • TORQUE OUT:从0到满量程,对应电压是0 ~ 5 V。由于转矩可以有两个方向,所以总的电压范围就是-5 ~ +5 V
  • STRAIN OUT:虽然标记是STRAIN,但其实只是马达转动的角位移。从0 ~ 0.5 rad对应电压是0~5V,考虑两个转动方向,总电压范围是-5~+5 V

TORQUE OUT的“满量程”到底是多少呢?由于我们的ARES有两个档位的力矩传感器。Xducer 1的传感器叫做“20g FRT”。20g是指该档位的最大量程是20 g·cm,力矩的一个非SI单位,SI单位是N·m。1 g·cm = 98.066E-6 N·m。可以去此网站进行换算。FRT是force rebalance transducer的缩写,这是ARES的传感器采用的一种技术(参考)。所以20g FRT的最大量程是1.96E-3 N·m。另一个档位Xducer2是1k FRT,也就是最大量程是0.0981N·m。因此,到底TORQUE OUT输出的电压值对应多大的力矩,要看当时仪器在线的传感器档位是Xducer1还是Xducer2。以下是更详细的参数:

Transducer 1 2
Transducer Description 20g FRT 1k FRT
Maximum Torque (g·cm) 20 1000
Minimum Torque (g·cm) 0.004 1
Torque Calibration Value 21.34 1050.7
Torque Compliance 6.67E-06 6.67E-06
Inertia Constant (g·cm^2) 660 660
Phase Adjust Constant (rad·s/rad) -5.80E-05 -5.80E-05
Maximum Normal Force (g) 2000 2000
Minimum Normal Force (g) 2.00E+00 2.00E+00
Normal Calibration Value 2101.8 2101.8
Normal Compliance (um/kg) 0.00E+00 0.00E+00
Phase Offset (rad) 0 0
Motor Temp Reference (°C) 3.27E+01
Motor Temp Gain 2.9445
Compliance Gain 7.89E-01

记STRAIN OUT输出电压为Vs,TORQUE OUT输出电压为Vt,换算成相应的角位移θ转矩M的公式是:\theta=k_\text{s}V_\text{s}M=k_{\text{t},i}V_\text{t},其中,转换系数kt = 0.1 rad/V,kt,1 = 3.92E-4 N·m/V,kt,2 = 0.0196 N·m/V。从角位移(rad)到应变(量纲一量),以及从转矩(N·m)到应力(Pa),还各需要乘一个系数FγFσ,这个系数跟所选用的夹具种类和尺寸有关。流变仪的说明书会介绍各种夹具的系数如何从夹具的尺寸来换算。这里只举锥板夹具的例子:

Figure 1 Cone-plate geometry

Figure 1 Cone-plate geometry

$$F_\gamma=\frac{1}{\tan\alpha},\quad F_\sigma=\frac{3}{2\pi R^3}$$所以,最终的应变和应力应该是$$\gamma=F_\gamma k_\text{s}V_\text{s},\quad\sigma=F_\sigma k_{\text{s},i}V_\text{t}$$

实验数据处理

从仪器背板TORQUE OUT和STRAIN OUT连线到ADC的channel 1和channel 2输入,然后在计算机中的FT Measurement控制ADC以一定的采样频率fs进行采样,就会生成一个文本数据文件,此例的文件名是“DTimeSwp (13) 000 .txt”。第一行是一些说明性的数字,然后就是两列数据,分别对应着channel 1和channel 2的电压测量值,按照通常的接线方式,第一列是STRAIN OUT信号,第二列是TORQUE OUT。在MATALB中预览出下:

Figure 2 Data file from FT Measurement

Figure 2 Data file from FT Measurement

用importdata命令可以自动处理具有表头的数据文件,把表头文字和数据分开。


clear all
clc


A=importdata('DTimeSwp (13) 000 .txt')

观察A的返回信息。如果源文件没有表头,是纯数据,A就是直接由这些数据组成的矩阵;如果有表头,A就是一个struct类型,包含一个data单元和一个textdata单元。textdata是以表头为内容的字符串,data单元就是数据组成的矩阵。要调用data,语法是A.data。为了简单,就把数据重新放在一个新的变量中:


x=A.data;

DTimeSwp (13) 000 .txt这个文件,对应的是一个dynamic time sweep测试,命令的应变幅度γ0 = 160%,角频率是ω = 6.283 rad/s(f = 1.0 Hz)。FT Measurement控制ADC以fs = 200 Hz的采样频率进行采样。我们可以从fs重构一列时间数据,拼到变量x中:


fs=200; % the sampling frequency was fixed by the test condition

t=0:1/fs:(length(x)-1)/fs; % construct the time series
t=t(:);

x=[t x]; % combine the time series and the signals

这样,变量x第一列是时间,第2、3列才分别是STRAIN OUT和TORQUE OUT电压信号。这个实验是用一个锥板夹具来做的,直径50 mm,锥度0.04 rad。测试时,在线传感器是xducer 1。因此根据计算公式,Fγ = 24.99,Fσ = 30557.75,kskt,1的值前文已经过了。把x变量的数据转换成应力和应变:


% set all the coefficients
F_gamma=24.99;
F_sigma=30557.75;
ks=0.1;
kt1=3.92e-4;


% convert voltage to strain/stress
x(:,2)=F_gammaks.x(:,2);
x(:,3)=F_sigmakt1.x(:,3);

获取信号的频率

至此,对变量x的波形重构可以完全跟之前文章介绍的一样的,不再重复。但是本文再作一项改进。前面几篇文章说过,实际应变值跟软件设定的命令有可能有所偏差,加上仪器噪音的影响,所以我们要重构应变的信号来准确获得实际的应变幅度和频率。而准确的FFT结果要求待做FFT的信号是“相干取样”的。做相干取样又要求我们至少要准确知道信号的频率。解决这一矛盾的方法是,利用应变必然是正弦波的性质,先通过正弦函数拟合来获取信号的应变和频率。事实上,对于一个正弦波,正弦拟合和FFT都是重构的方法,但实际上正弦拟合的幅度和相位往往不准,所以只要能做好相干取样,我们都偏爱用FFT做重构;但是正弦拟合得到的频率是准的,而这时我们只需要知道一个频率,因此可以采用正弦拟合来完成。

我们调用一个别人开发的代码进行:sinfapm。其语法在代码开头的注释文件中有清楚的介绍。注意,sinfapm代码又调用了另一个用于进行非线性最小平方求解的第三方代码:LMFnlsq,需要都放在同一个文件夹。

sinfapm函数还有一个麻烦之处,就是处理取样频率太高的数据会失效。所以,在使用前要临时对一个未知信号“降采样”(down sampling)。经验表明,对每个周期不超过1000个数据点的数据,sinfapm能够稳定表现。因此就是在使用sinfapm前要加一段代码,如果信号每周期超过1000个点,就降采样为每周期1000个点;否则就不变。麻烦的是,为了知道原信号每周期有多少个点,我们还是要先知道信号的频率。所幸,这一步只需要粗略估算即可,因此,做一个不靠谱(没有相干采样)的FFT粗估一下频率就行了。总之,整个精确获得频率的步骤就是:

  1. 用FFT粗估频率
  2. 根据粗估频率计算信号每周期有多少个数据点,决定降取样比值
  3. 对降取样的数据进行正弦拟合得到精确的频率

以下是代码:


% Roughly estimate the input frequency by FFT
N=length(x);
Xraw=fft(x(:,2)); % needless to renormalized the amplitude coz we only want the frequency

% find the maximum peak and obtain the corresponding row index
% the first data is the DC component which is omitted because the value may
% be higher than the first harmonic and violate the peak finding
[I, J]=max(abs(Xraw(2:end)));
% I is useless

% estimate the points per cycle of the signal
pts_per_cycle=N/J;

if pts_per_cycle > 1000
% select 1 out of every jump data to reach 1000 points per cycle
jump = floor(pts_per_cycle/1000);
else
jump=1;
end

[f, amp, phi]=sinfapm(x(1:jump:end,2),fs/jump);
% amp and phi are useless

f

我们可以作图验证sinfapm是否正常工作了:


plot(t,ampsin(2pift+phi),'r-',t,x(:,2),'bo') % Figure 3

Figure 3 Effect of sinfapm

Figure 3 Effect of sinfapm

连幅度和相位都拟合得这么好,频率的拟合结果应该是可信的了。频率知道了之后,剩下的事情就不新鲜了,参见前一篇文章。


N=length(x);
pts_per_cycle=fs/f;
N_cycle=floor(N/pts_per_cycle);

N_cut=round(round(N_cycle/3)*pts_per_cycle); % use the last third of cycles
x=x(length(x)-N_cut:end,:); % crop the last N_cut data

Xraw=2*fft(x(:,2))/N_cut;
Xraw=Xraw(1:ceil(N_cut/2));
freq=0:fs/N_cut:fs/2-fs/N_cut;

A=abs(Xraw(round(N_cutf/fs)+1));
delta0=wrapTo2Pi(angle(Xraw(round(N_cut
f/fs)+1))+0.5pi);
frq=freq(round(N_cut
f/fs)+1); % this line can be omitted and use the f instead
x_rec=A.sin(2pifrq.x(:,1)+delta0); % frp can be replaced by f

Yraw=2*fft(x(:,3))/N_cut;
Yraw=Yraw(1:ceil(N_cut/2));

max_nr_harm=floor(fs/(2*f));
if max_nr_harm/2==floor(max_nr_harm/2)
max_nr_harm=max_nr_harm-1;
end

max_nr_harm=max_nr_harm-2;

if max_nr_harm>25
max_nr_harm=25;
end

I_n=zeros((max_nr_harm+1)/2,1);
delta_n=zeros((max_nr_harm+1)/2,1);

for i=1:(max_nr_harm+1)/2
I_n(i)=abs(Yraw(round((2i-1)N_cutf/fs)+1));
delta_n(i)=angle(Yraw(round((2
i-1)N_cutf/fs)+1))+0.5pi;
end
DC=abs(Yraw(1))
cos(angle(Yraw(1)))/2;

y_rec=zeros(length(x(:,3)),1); % create the variables for the reconstructed signals
for i=1:2:max_nr_harm
y_rec=y_rec+I_n((i+1)/2).sin(i2pif.*x(:,1)+delta_n((i+1)/2));
end
y_rec=y_rec+DC;

plot(x(:,2),x(:,3),'b-',x_rec,y_rec,'r-') % Figure 4

看效果:

Figure 4 Reconstruction of the LAOS results.

Figure 4 Reconstruction of the LAOS results.

我们的信号是已经转换成应力和应变的了。因此,Figure 4中横轴是应变,正负最值都是1.6,与软件命令值(160%)相符。我们换一个应变幅度为250%实验数据,结果如下:

Figure 5 Reconstruction of LAOS data

Figure 5 Reconstruction of LAOS data

γ0 = 250%时已有明显的非线性粘弹性。

计算非线性粘弹性参数

我们平时所说的G’G”,是FFT之后的基频幅值计算的。在线性粘弹性条件下,FFT之后只有一个基频帐,G’G”是“储能模量”和“损耗模量”。但是在非线性粘弹性条件下,G’G”只是许多n倍频谐波中的基频分量(n = 1),它们也没有“储能”或“损耗”的概念了。这一点要先搞清楚。

计算G’G”


delta=wrapTo2Pi(delta_n(1)-delta0);
G_p=cos(delta)I_n(1)/A;
G_pp=sin(delta)
I_n(1)/A;

In/1也可以直接计算:


In1=I_n(2:5)/I_n(1);

如何求切线

现在我们来计算GMGMGk参数。它们的定义已在上一篇文章中给出。根据定义,需要对曲线进行求导。在MATLAB如何做呢?按定义一步步来。

一个已经离散化了的曲线,要在曲线上某几何位置求切线,很可能并没有数据恰好落在这个点上,只能使用这个几何位置邻近的两个数据点,以这两个点所确定的直线作为切线。所以,如果一条曲率较大的曲线,离散化的取样频率又很低,那么很可能两个数据之间相隔很远,按以上办法求出来的切线与理想情况就会相差很远。也就是说,对离散数据求导的效果非常依赖于信号的取样质量(就是取样频率够不够高)。

其次,如果信号有噪音,那么作出的切线斜率将非常容易受噪音影响。在数值方法中,求导是一个放大噪音的操作。一个信号,很可能不求导的话,噪音还在可以接受的范围;一旦求导之后噪音就使信号无法分辨。因此,对离散数据求导的效果又非常依赖于信号的信噪比。

因此为了求得准确、稳定的导数,我们要采取一系列的办法。第一当然就是测试的时候让ADC以最高的采样频率进行采样(100 kHz)。

第二,这样高的采样频率,完全可以进行降采样(down sampling)。但我们的降采样方法不是像前文用过的那样简单地扔掉部分数据点——这样对于去噪没有任何效果——而是每几个数据点做一次平均值,这样的做法叫decimation,它的效果相当于使样品经过一个低通滤波品,把高于一定频率的信号消除掉。如果我们每N个数据取一个平均值,那么decimation之后的取样频率就是100000/N Hz。一开始,用远高于需要的取样频率取,称作过取样(oversampling)。Oversampling和decimation是信号采集中的一个基本操作,作为一种提供信噪比的标准步骤。使用FT Measurement采集的流变数据的时候,该软件是同时做了oversampling和decimation的,最终得到的文本数据文件的采样频率是decimation之后的采样频率。这方面内容,也可以参考我的博士论文的第二章。

第三,我们按照LAOS的假设(应力波型只有奇次谐波)对信号进行重构,用一个光滑的、公式计算的曲线来代替实验测得的、带有噪音的曲线。重构曲线是完全没有噪音的。这还不够——

第四,由于信号有很多个周期,那些过零点、最值点之类的几何位置,信号不止经过一次。那么,我们就把每次经过的这些位置所能作出的切线斜率都算出来,然后对这么多个周期得到的斜率曲一个平均值,进一步消除不同周期处的细微差别。

只有做足以上四个方面,才能比较保证地对绝大多数实测的LAOS数据进行准确可靠的求导操作。

在MATLAB中如何在重构的Lissajous曲线上找到要作切线的几何位点?根据定义,GM要找γ = 0,GL要找γ = γ0Gk要找σ = 0。我们需要确定这些几何位置邻近的两个数据点处在数据列中的第几行。以GM的计算为例(找γ = 0)。这相当于要找数据x_rec中取值经过零位的行。而且,我们只关心从小于零变成大于零的地方(这里默默假设了x_rec是没有直流分量的,如果有直流分量,x_rec波形的零位就不落在取值为零处,除非另把DC分量减去)。首先,我们把x_rec数据所有大于零的值标为1,小于零的值标为0。


A=x_rec;
A(A>0)=1;
A(A<0)=0;

在A这个临时变量,凡是导数不为零的地方就是转折点(不是从1变到0就是从0变到1),这些不为零的导数,不是等于1就是等于-1。由于我们只关心x_rec中从小于0变成大于零的地方,所以我们相当于只关心A的导数等于1的地方。


zero_ind=find(diff(A)>0);

以上用到的一些用逻辑式调用矩阵单元的方法,和find命令等,可以自己复习MATLAB的help。zero_ind就是x_rec中取值从负到正的第一个数据,即它是负的,然后第zero_ind+1是正的。我们可以临时作个图看看,我们找到的zero_ind位置都对不对:


plot(1:length(x_rec),x_rec,'-',zero_ind,zeros(length(zero_ind),1),'o') % Figure 6

Figure 6 Effect of zero finding

Figure 6 Effect of zero finding

求导、取平均,得到GM


G_M_raw=(y_rec(zero_ind+1)-y_rec(zero_ind))./(A(zero_ind+1)-A(zero_ind));
G_M=mean(G_M_raw);

我们可以再临时作个图看看这个切线取准了没有。但为作这个图,要先确定真实的位点在哪儿(不能还用那两个邻近数据点)。这个点,应该是两个相邻点所确定的直线与x = 0直线的交点。同样,这个交点也可以通过多个周期求平均而更为准确地确定。最终要作的切线,就是一条过这一交点,斜率为GM的直线,利用简单解析几何知识即可作出:


y_m_raw=-G_M_raw.x_rec(zero_ind+1)+y_rec(zero_ind+1);
y_m=mean(y_m_raw);
lx=min(x_rec):0.01:max(x_rec);
ly=G_M.
lx+y_m;
plot(x_rec,y_rec,'-b',lx,ly,'-r') % Figure 7

Figure 7 Effect of G_M calculation

Figure 7 Effect of G_M calculation

GL要找γ = γ0,即找x_rec中的最值。先对x_rec进行求导,问题就还原成找x_rec求导后的过零位,除了多一步求导之外,其余跟刚才的代码完全相同。注意的时,y_rec有明显的直流分量,计算时要减去。


A=diff(x_rec);
A(A>0)=1;
A(A<0)=0;

zero_ind=find(diff(A)<0);

G_L_raw=(y_rec(zero_ind)-DC)./x_rec(zero_ind);
G_L=mean(G_L_raw);

Gk是找σ = 0:


A=y_rec-DC;
A(A>0)=1;
A(A<0)=0;
zero_ind=find(diff(A)>0);

A=y_rec-DC;
G_k_raw=(A(zero_ind+1)-A(zero_ind))./(x_rec(zero_ind+1)-x_rec(zero_ind));

G_k=mean(G_k_raw);

至此,我已经完整地介绍了如何从实验获得的LAOS数据求出相应的非线性粘弹性参数。我再总结一下流程:

  1. 做实验,设定ADC采集参数进行数据采集(同时已进行oversampling和decimation,规定了信号的fs
  2. 通过对应变信号进行粗估和正弦拟合,获得实验的准确测试频率
  3. 对应变和应力信号进行重构
  4. 按照定义求得各非线性粘弹性参数

如果对实验体系以一系列的应变幅度进行了LAOS实验,然后想考察非线性参数随应变幅度的变化;那么,可以对每个应变幅度得到的LAOS数据做以上同样的操作,既编写一个循环结构来完成。这样的办法将在后面的文章中看到例子,此处不单独举例了。后面的文章主要介绍如何用流变学模型的结果(例如Giesekus模型)来拟合实验数据。

References

  1. K. Hyun, M. Wilhelm, C.O. Klein, K.S. Cho, J.G. Nam, K.H. Ahn, S.J. Lee, R.H. Ewoldt, and G.H. McKinley, "A review of nonlinear oscillatory shear tests: Analysis and application of large amplitude oscillatory shear (LAOS)", Progress in Polymer Science, vol. 36, pp. 1697-1753, 2011. http://dx.doi.org/10.1016/j.progpolymsci.2011.02.002

知乎:为什么学术杂志论文很贵,而作者又没有从论文下载中受益?

原问题地址: http://www.zhihu.com/question/20692550

受邀。但本人一向答非所问。

一、

有很多这类问题:文章署名为什么是这个原则?为什么研究结果一定要发到那些期刊上?直接在网上放出来不行吗?什么是同行评议?现在的同行评议还有效吗?影响因子重要吗?为什么?……然后也包括本问题。

在仅有6平方米的小屋里,陈景润坚持埋头于哥德巴赫猜想的研究,经过艰苦的努力,终于取得了震惊世界的成就。在“文革”刚刚结束的那个“科学的春天”里,陈景润成为激励广大青年向科学进军的旗帜。
http://www.gmw.cn/01ds/1998-03/25/GB/191%5EDS609.HTM

这些问题的产生原因是今时今日科学研究的建制(infrastructure)已经跟法拉第时代很不一样了。它发展到今天这一步,也可以说是“悄悄地”,因此公众(尤其是深受八十年代“科学的春天”报告文学影响的中国公众)并不了解这个发展过程。研究生是从公众角色进入科研角色的一个过程,但是,很少课题组会正式地给新进来的研究生概述现代科学研究组织模式的全貌。我们都明白,很多行业都有理想与实践的区别。但是,对于医生警察律师扫大街等大众十分熟悉的行业,理想的情况是什么,大家都很清楚。因此,一旦身为医生或警察,虽受制于现实的不完美,但心中至少很清晰那个尽量要达到的理想状态是什么。但现代科研事业的情况有点不一样。研究生们很可能一直都没有被正式的呈现一个完整的是非观和分寸(理想的),他们只能看自己的导师和别人的导师、自己的师兄师姐、其他课题组的同学等等来模糊地定位。因此就造成了,研究生群体中关于科研事务和与科研有关的人际关系的是非价值观非常混乱。他们向导师提出的期望和要求,很可能自己都不清楚理由在哪儿;同理,他们想拒绝导师的期望和要求,也不清楚是否有理。对于不同的研究生,觉得怎样算合理,十分依赖于他们的经历和见闻。的而且确,科学研究的优良传统的传承非常依赖于导师到学生这条路径。往往导师在大谈科学研究之道时,引用最多的还是他当初的导师如何。尤其是在科学研究的模式严重异化了的现代,那种旧时的传统的传承就更加脆弱了。因此,优秀的研究生院和实验室,都会撰写一些当前科学研究模式和角色扮演的常识性内容,供初入科研大门的研究生学习,并作为一种是非参考座标来比对他们将来在实践中看到的人与事。例如中文网络上一度流传甚广的麻省理工大学人工智能实验室编写的“如何做研究”:How To Do Research In the MIT AI Lab。你可以看到作者是“a whole bunch of current, former, and honorary MIT AI Lab graduate students”。这说明,在新的形势下,到底怎样做是对的,怎样做合适,无非不过是大家形成的一种共识。固然有一定程度的空间可以供你问“为什么”,但无限问到底的话,也就只能是“共识”而已。凡这类资料,里面很可能会包括“发表论文”这一章,“导师”这一章、“师兄师姐”这一章、“会议报告”这一章,其实是一些FAQ,用于回答本文开头列举的那一大堆“为什么”。

二、

现代科学研究的一个非常重要的特点是:它是一项职业。是职业,就要考核绩效,就要评级分高下。于是,影响因子、H因子等等事情就都出来了。因此,在当今科学研究圈子里,publish or perish是一个无奈但难以破解的主题。其实,若不是因为这个,论文大可以一稿多投,而且也应该一稿多投。我发现了一个新现象,为了最多的人能够最快看到,不就一稿多投了么。我一稿多投伤害了谁吗?无非是因为发表的论文数是评价科研能力高下的重要参考——于是也是决定科研人员升迁的重要参考,所以才使一稿多投行为变成一种不公平的行为,变成拼升职可以不拼原创工作积累,而是去把一稿N投的N最大化了。事实上,科学论文的读者只关心论文的内容,及其真实性,它并不关心作者本人能力是否高,是否教授——这无非是作者本人才关心的事情。

科研的职业化还造成很多其他的无奈的扭曲,但这些扭曲都还没严重到危害科学研究的结果。因此大家在目前的科学研究模式中都处一种两难中找平衡的状态。这就更要求从业人士对科学研究本身的宝贵传统和理想情况十分清晰,否则很容易失衡(中国的情况)。

三、

现在才稍微谈谈本问题的话题。期刊是从纸时代发展过来的模式。在当时,你必须订阅,才能看到发表在期刊上的论文。为节省金钱,既有课题组集体订阅,也有图书馆订阅的方式。个人订阅也是可以的,特别是像Science这种。

科学研究成果很讲究尽快发表,所以从传统上除了full articles之外还有letters、communications等体裁。这是害怕自己失去了第一发现权。为此除了要快之外,也希望能尽量广地宣传,让大家知道这个已经做出来了。所以从科学研究的初衷(理想)来讲,为何更倾向于论文能发表在Science或者Nature,最初都是因为这些期刊的发行量够大。而作为这些期刊的编辑,自然会比其他发行量少的期刊收到更多的投稿。很自然,期刊是要以保住订阅数为第一原则的(这跟电视台要保住收视率相似),因此,遴选稿件的原则就是选择足够重要的研究成果予以发表。何谓“重要”,据JACS主编的说法,那就是具有“broadest interest”的研究成果,越是能让更多其他研究方向的人对你的研究成果感兴趣越好;那些具有深入的analysis但只兴趣范围局限于行内的paper,非常好,鼓一百个掌,但不够“重要”(JACS主编观点,相信也代表着很多高影响期刊主编的观点)。可以看到,这样定义“重要”,是纯粹有利于期刊的一种定义,broad interest的结果直接就是订阅数量的提高。订阅数量提高了,就使得更多人愿意把稿件投到该杂志,该杂志能够选出更“重要”的研究,“档次”于是也越来越高了。

假如科研没有职业化,没有publish or perish定律的统治,这样的情况也无甚不可。扎实的,对本专业研究有基础性贡献的常规研究成果,虽没办法发表在Nature/Science,但也不会对作者造成什么损失。在很多研究领域的内部,一些发表此类常规论文的期刊,更受业内人士的尊重(例如高分子领域之对于Macromolecules)。但是在publish or perish的统治下,情况就有所扭曲了,特别是在中国。因为大家不得不尽量使得自己的研究成果不是更深入,而是更花哨。商业期刊也乐于发表这样的论文。影响因子上去了,是作者和出版商都皆大欢喜的事情。但是这就带动了一大批参考性有限、为发表而发表的论文充斥在当今的论文海洋中。我们发现,发表的paper真是越来越多,还真幸亏有了RSS和Google Reader,且哪怕如此那个inbox的计数还是长期显示1000+——已经坚持每天敲空格消灭一批了。所以我们今天是很难想象在那没有网络和搜索引擎、更没有RSS的时代,研究人员如何进行literature survey。只能说在那个时代,大家只会关注行内几个重要期刊,也只希望自己的成果发表那几个期刊上,至于在世界的角落还有哪个论文可能已经论述某问题,人们实在关心不了,也就等于没发表了。

四、

所以,期刊的存在,帮助了研究人员更快更广地宣传自己的研究成果。满足了这一需求,就相应收一笔钱。收多收少,完全看市场。这也是无可厚非的(我的经济观念比较右倾)。还要考虑到期刊还承担了同行评议过程的组织工作,校对、排版、印刷都要人力和物资成本。所以是不能要求免费白干。问题只能是为何今天一些大的出版商能够把这笔费用收取到如此高的地步。这里有几个原因。

一是,无论费用多低,大家都愿意省钱。

由于论文与论文之间的内容差别会非常大,所以一本期刊,你很少是以从头逐篇读到尾的形式去阅读的,往往是直接了当地去翻到那篇论文,看完就放回去了。这样的阅读模式,使得期刊更适合大家集体订一份。你看你要的那篇论文一般不会与我看我要的那篇论文发生冲突(不像书,你要看福尔摩斯,我也要看,就必须有两本才不冲突)。这甚至可以全校师生只靠图书馆订的那一份,只要图书馆提供复印机。这对出版商是不公平的,但又是公益性的(“科学研究”是一个很难抵毁的道德高地),所以只能提价来补偿。今时今日,要看论文是只有通过图书馆购买权限共享才划算的。学术圈之外的人士贸然想看什么“学术论文”,看到单篇下载价格,当然要吃惊。

二是,出版商帮作者推高了期刊的影响因子

在publish or perish的统治下,很多(中国)作者投稿对期刊有着超出专业之外的选择性,那就是纯看影响因子。大的出版商在经营高影响因子期刊方面有着丰富的经验。ACS、RSC这几年新开了这么多期刊,都无往而不利。这得益于他们不断投钱建设和紧跟互联网发展潮流的电子期刊网络系统,以及他们为期刊的宣传做的各种公关活动,这些都提升了期刊的IF,是高价值的服务,这些钱当然也是要收的,问题是向谁收。以往都是向读者(图书馆)收。现在许多期刊都尝试Open Access,改向作者收。其实,无论向哪方收,都有说不通的道理。你把影响因子抬高的努力,满足的是作者的利益,大可以向作者收费啊,肯定是作者才愿意回报你这方面的努力,怎么会是去向读者收?但如果向作者收费,也有问题。一个高影响因子的期刊,拒稿率也会很高。如果收益是来自作者,一个期刊就不必要维持过高的影响因子,即无需维持过高的论文质量。可以使影响因子降低,只要不低到影响投稿量就行了。如果都是这样的期刊,市面上只会充斥着清一色的平庸产物。不用等到所有期刊全变成Open Access,自觉的科研工作者对仅存的传统模式期刊的青睐程度,就已经让OA寸步难行了——这也是目前真实情况。所以,压力还是只能落在高校图书馆这头。

有很多幼稚的口号,例如纳税人交钱投资科研,成果不应该再收费。其实,你完全可以嫌已有的出版商要价过高,自己组织一些同行办期刊,维持相当的同行评议,然后不收费(假设你有足够的办法)。但是有一点:影响因子上不去,你就没有好的稿源,大家都更愿意投到高影响因子的期刊上。说到底,这个出版商的超高价格,其实是publish or perish造成的代价,也就是当今科研职业化的并发症。谁让大家为了职业生涯不得不选择高影响因子期刊来发表最重要的研究成果呢?你单单指责科研成果要收费查阅,不去指责科研人员拿纳税人的钱来做科研又以研究成果来挣生活,那就是片面的。如果后者合理,你就很难指责前者。这是不能再问“为什么”的地步,如我前文所说,到了一定程度,就是大家的共识。学术圈仍然是一个自治色彩浓厚的圈子。圈内觉得这样没问题,圈外人就不应多加指责。虽说纳税人纳了税,但这个钱只是用于支付成本和代理的劳务费,不是用于购得专业上的控制权。专业人士代公众完成专业性强的公益性工作,收取劳务费;但专业人士的专业操守,只能靠成立行业协会(如律师协会)来有效监督,公众至多去监督行业协会在专业问题之外的程序问题之类。

四、

以上道理,现在的公众也不是不清楚了。但是,他们会继续直接攻击科研职业化本身。似乎科研是否要职业化,是可选择的;竟然走向了职业化,代表着人的一种腐朽和堕落。诚然,publish or perish长期以来也是科研工作者讨论的热点,但无论怎么讨论,这么多年了,没法破。毕竟这是一个近百年来历史发展的结果,提到战争的因素也好也好,国家转变发展战略的重点也好,互联网的出现也好,这些因素,都是硬梆梆的历史,而不是某人的自私自利。公益性事业到底是私营还是公营的问题,实在是太大了。但凡涉及到这一问题,争论是不会休止的。总有人希望打着公益性的旗号让一切免费,也总有大资本家尽倾创业艰难史和强调贡献与回报。如果在认识到前文介绍的一切之后,还要继续讨论要不要“全民免费PDF全文下载”的问题,那就相当于明明深谙“看病难看病贵”体制症结之后仍然还要继续讨论要不要“全民免费医疗”一样——耍赖。不是说看病难看病贵很合理,但也不等于说必然要搞全民免费医疗。

Arron Swartz是个大帅哥,我确实为他的自杀而伤心。但若论他的主张,我是不同意的。我也是萨切尔夫人的支持者。所以这个问题如果是讨论到了左派和右派互骂的层面,就完全可以停止了。因为这样的互骂网上已经很多,不需要在这里又重复。

五、

无论如何,还是要承认目前的现状是不理想的(虽合理),如何稍微理想一点?跟所有无法破的大局一样,只能自欺欺人地、无力地倡议所谓的“从我做起”了:尽量不要追逐影响因子,尽量逃开publish or perish的统治。尤其是,当你拿到tenure之后(在国内,似乎可以对应为拿到“杰青”之后?),请做扎实的研究,投在受众兴趣比较集中的专门期刊上。你的研究努力,应该是致力于满足研究领域内的好奇,回答领域内的问题,优先为本领域作出一点贡献;而不是去追求所谓的broad interest,做一些力求让不同领域的人都能理解、但却没有什么贡献的论文,只为了发表在高影响因子的期刊上。假如每个人都这么做,那么市场的供需重点就不再在于影响因子上,在出版商的优势就不那么明显,它自然就没有继续维持高价的市场资本了。当然,跟所有其他的“从我做起”们一样,这只能是一种理想。你不扔垃圾,不闯红灯,并没有改善卫生和交通,说到底这只能算是自我修养。同理,前面说的做研究的原则,也只能说是自我修养。跟所有人的修养一样,它的培养是不可能仅靠社会历炼的——恰恰相反,社会历炼只会不断地为抛弃个人修养提供强大理由。修养的形成最依赖的,还是在成长初期长辈的教育。挪到科研方面来讲,那就是研究生阶段导师的言传身教。如果导师本身不追逐影响因子,不受publish or perish的束缚,一贯专注于研究课题的内在价值,那么学生将来也才能形成足够强大的信念来坚持这些。这就又回到我文章开头说的,要先对什么是理想情问十分清晰,才能在现实中努力地找到平衡;什么是理想都知道,必然会失衡。

我之所以这么认为,是因为我的导师就是这样的导师,又因为他的导师是这样的导师。因此,我个人甚至有一种偏见,那就是读研不要选择年轻教授。tenured都不算,最好emeritus!

谈谈我使用LinkedIn网站的感想。

当年LinkedIn网站出现不久,国内就有个翻版叫wealink,现在叫若邻网了。我在这些网站刚出现的时候都注册过。Wealink很快就做出中国特色,那就是万事都要追求“立马兑现”,冲着“立马找到工作”或者“立马招到人”来做。而当时我还是个学生,所以若邻网就再也没上了。但是LinkedIn没有这样的气氛,一开始的LinkedIn还像一个校友录和社交网站。后来它的用户的专业性越来越明确了。我加入的流变学会群组,里面的讨论也真正算是同行讨论水平,有了一个流变学家的圈子。于是我也把我在LinkedIn上的profile完善了一下。

LinkedIn很主张用户只与认识的人建立好友关系,尤其是有实际工作关系的人。LinkedIn的用户profile有很多地方是可以由用户的好友进行推荐和确认的。它希望,一个用户的profile通过与其有工作关系的人进行推荐,对于其他人来说能够更有参考价值。当然,这种做法,对于LinkedIn已经非常流行了的国外,是奏效的,因为很可能一个Office中的每个人都有LinkedIn帐号。但对中国国内用户来说不是这样。很可能整个单位没几个用LinkedIn的。

我在LinkedIn上也确实很少去加陌生人。我最主动去加的陌生人,是McKinley的一个学生Ewoldt。因为我做的课题方向跟他的实在太像了。但这也仅限于一个connection,没有任何谈话。最近,王十庆老师的一个学生加了我,我也accept了,实在是同行中的同行。

但是,不时也会有很多其他的陌生人加我,这些用户,看用户名感觉是华人,但是没照片,profile是空的。我觉得,要别人愿意结识你,首先你要做好自我介绍。刚刚注册LinkedIn,可能网站会引导你添加和邀请你可能认识的或感兴趣的人。但我觉得在加人之前,还是要把自己的profile先填写清楚。毕竟LinkedIn不是一个随便加好友的社交网站,而是专门用于展示专业背景的网站。哪怕我的profile非常弱,但是实事求是。也许我的真实水平会让其他国家或地区的人认识到,原来中国国内这种资历的人是可以达到这种水平的,对以后国外同行对国内资历的认识起到宣传的作用。所以,也要尽量积极地参与专业群组的讨论。事实上,在LinkedIn的流变学会群组里,我和McKinley、王十庆教授都曾参加同一话题的讨论。借助网络的便利,我不出国门,就能了解到他们的观点,从中学习,是非常划算的一件事情。