ANSYS|科学计数法数据读取错误问题

1. 问题描述

ANSYS常用的数据读取格式是:

*VREAD,EXCI1(1),V100K_C1,TXT
(F12.7)

用这种方式读取科学计数法数据如:

0.0000000e+00
1.9259679e-03
1.5124368e-02
4.9482003e-02
1.1225699e-01
2.0710678e-01
3.3348874e-01
4.8649803e-01

会发生错误,导致数据混乱,分析结果错误。

《ANSYS|科学计数法数据读取错误问题》 image_1b25ef4omnqe1jsu1ik91v391aa39.png-45.8kB

而序列化数据往往由MATLAB生成。

2. 技术背景

  • ANSYS
  • MATLAB

3. 解决方案

为了避免如此结果,需要保证MATLAB输出的数据问题为自然计数法格式。

MATLAB常规的数据输出语法:

save(filename,'V','-ascii','-double')

默认输出科学计数法数据。

为了得到自然计数法的数据,我们采用

4. 实施示例

信号数据构造示例:

% 题目: 超声导波激励信号的生成与频谱分析
% 参数:
%       N  - cycle数,即激励信号波峰数
%       fc - 激励信号中心频率
% 功能:
%       生成激励信号序列
%       绘制时域图和频域图
%       对比不同cycle数信号的特征
%       输出txt文件
% 作者: 马骋
% 参考:张玉强2013,p29
% 2016.03.18 @HIT

clc,clear,close all

%% 基本参数

N = 1;                                                                          % cycle数,即激励信号波峰数
fc = 100e3;                                                                     % 激励信号中心频率,Hz
A  = 1;                                                                         % 激励信号幅值

T = 1e-4;                                                                       % 激励持续时长
dt = 1/(20*fc)/2;                                                               % 时间步长,在最大步长基础上除以2
t = [0:dt:T]';                                                                  % 时间序列

%% 信号时域波形

V = A*[heaviside(t)-heaviside(t-N/fc)].*...                                     % 时域输入信号求解         
    (1-cos(2*pi*fc*t/N)).*sin(2*pi*fc*t);

%% 频域信号

fs = 1/dt;                                                                      % 采样频率
Nz = length(t);                                                                 % 数据长度
fz= fs*(0:Nz-1)/Nz;                                                             % 频域横轴
X = fft(V);                                                                     % fft变换

%% 绘图

figure
subplot(211)
plot(t,V)
xlabel('t(s)'),ylabel('Mangitude(N)')
xlim([0 T]),grid on

subplot(212)
plot(fz/1000,abs(X))
xlabel('frequency(kHz)'),ylabel('Amplitude')
xlim([0 fs/2/1000]),grid on                                                     % 防混叠,fs/2

%% 信号输出
filename = ['V',num2str(fc/1000),'K_C',num2str(N),'.TXT'];
% save(filename,'V','-ascii','-double')

fid = fopen(filename, 'w');
for iloop=1:length(V)
    fprintf(fid, '%15.10f \r\n', V(iloop));
end
fclose(fid);


《ANSYS|科学计数法数据读取错误问题》 image_1b25esbqhbbcaud1r4ksgic6i9.png-31.1kB

输出数据:

《ANSYS|科学计数法数据读取错误问题》 image_1b25eto6ac7eeg31j5v12jk1d4qm.png-20.4kB

5. 常见问题

数据的格式也可以手动用Excel调整。

本文用时 20 min。

    原文作者:马骋
    原文地址: https://www.jianshu.com/p/5d5175692bd3
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞