探究UG后处理中的进给速度R模式输出
最编程
2024-08-10 19:02:08
...
进给速度F之R模式输出
前言:
问题描述:
在机床加工过程中,通过UG CAM生成的数控程序段中可能存在多个进给速度,比如切削进给速度,逼近速度,进刀速度,第一刀切削速度,步进速度,退刀速度等等,如果利用常用的数值模式输出,在实际加工过程中容易出现两个问题:
① 在数控程序较大时候,如果需要对其中一个速度进行修改,可能出现搜索困难等问题
② 在数控程序中,同一个速度类型可能在多个代码段中使用,如果用数值模式输出,往往需要一一进行修改,造成工作量增大等问题
解决:
针对这个问题,不同的数控系统厂商都提供了自家关于进给速度变量控制方式,需要用户自行通过后置处理程序进行配置,那么以变量控制的好处是什么呢?
首先,如果以变量形式控制进给速度,可以在程序头统一体现,便于统一观察、管理及调用变量值,
其次,在修改进给参数时候,可以通过修改变量对应的数值来修改整个类型的进给速度,也可以通过对过程中的具体某个数值进行修改,操作方式更为灵活。
后处理编程过程:
虽然不同数控厂商的变量设置形式不同,当后处理程序段逻辑思路类似,以下我们以西门子840D系统为例,进行编程验证:
TCL程序段
#=============================================================
proc PB_CMD_wjc_value_msg_ini { } {
#=============================================================
uplevel #0 {
# # 常规进给速度输出格式:
# # "0" 或其它非 "1" "2"字符, 输出数字
# # "1", 输出 R 参数格式进给速度, R 值为进给速度值
set wjc_feed_output_format "1"
#
# # 当常规进给速度只有一个或一种速度时输出格式:
# # "0" 或其它非 "1" 字符, 输出数字
# # "1", 只有一个或一种速度时跟随输出 R 参数格式进给速度
set wjc_feed_single_output_format "0"
};#enduplevel
}
#=============================================================
proc PB_CMD_wjc_value_set_ini { } {
#=============================================================
#初始用户变量设定,在系统初始变量中设定
uplevel #0 {
set mom_feed_rapid_value "0"
set mom_feed_approach_value "0"
set mom_feed_engage_value "0"
set mom_feed_first_cut_value "0"
set mom_feed_stepover_value "0"
set mom_feed_cut_value "0"
set mom_feed_traversal_value "0"
set mom_feed_retract_value "0"
set mom_feed_return_value "0"
set mom_feed_departure_value "0"
set custom_feed_rapid_text ""
set custom_feed_approach_text ""
set custom_feed_engage_text ""
set custom_feed_first_cut_text ""
set custom_feed_stepover_text ""
set custom_feed_cut_text ""
set custom_feed_traversal_text ""
set custom_feed_retract_text ""
set custom_feed_return_text ""
set custom_feed_departure_text ""
set custom_feed_rate_text ""
set custom_feed_base_value_text ""
set custom_sys_leader_F "F"
set custom_sys_trailer_F ""
}; # end_uplevel
}
#=============================================================
proc PB_CMD_wjc_feed_check { } {
#=============================================================
#检测当前Feed设置形式,用于mom_before_motion中PB_CMD_wjc_feed_R_mode_replace前判定
#用于判定UG进给速度设置形式,是否是同一速度或不同速度等
global mom_feed_rapid_value #参数变量需要自行在mom变量中确认
global mom_feed_approach_value
global mom_feed_engage_value
global mom_feed_first_cut_value
global mom_feed_stepover_value
global mom_feed_cut_value
global mom_feed_traversal_value
global mom_feed_retract_value
global mom_feed_return_value
global mom_feed_departure_value
global custom_flag_feed_type_count
if {[EQ_is_zero $mom_feed_rapid_value] && [EQ_is_zero $mom_feed_approach_value] && \
[EQ_is_zero $mom_feed_engage_value] && [EQ_is_zero $mom_feed_first_cut_value] && \
[EQ_is_zero $mom_feed_stepover_value] && [EQ_is_zero $mom_feed_traversal_value] && \
[EQ_is_zero $mom_feed_retract_value] && [EQ_is_zero $mom_feed_departure_value] } {
set custom_flag_feed_type_count 1
} elseif {
([EQ_is_zero $mom_feed_rapid_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_rapid_value]) && \
([EQ_is_zero $mom_feed_approach_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_approach_value]) && \
([EQ_is_zero $mom_feed_engage_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_engage_value]) && \
([EQ_is_zero $mom_feed_first_cut_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_first_cut_value]) && \
([EQ_is_zero $mom_feed_stepover_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_stepover_value]) && \
([EQ_is_zero $mom_feed_traversal_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_traversal_value]) && \
([EQ_is_zero $mom_feed_retract_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_retract_value]) && \
([EQ_is_zero $mom_feed_departure_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_departure_value]) } {
set custom_flag_feed_type_count 2
} else {
set custom_flag_feed_type_count 0
}
}
#=============================================================
proc PB_CMD_wjc_feed_R_mode_output { } {
#=============================================================
#输出R模式格式,该程序段用于生成R模式的参数值及程序段头显示
#custom_flag_feed_type_count 均为0设置为1 均为0或者与切削速度相同为2 其他情况为0
global feed
global custom_feed
global mom_template_type
global custom_sys_leader_F
global custom_sys_trailer_F
global custom_sys_leader_F_output
global custom_sys_trailer_F_output
global mom_feed_rapid_value
global mom_feed_approach_value
global mom_feed_engage_value
global mom_feed_first_cut_value
global mom_feed_stepover_value
global mom_feed_cut_value
global mom_feed_traversal_value
global mom_feed_retract_value
global mom_feed_return_value
global mom_feed_departure_value
global custom_feed_rapid_value
global custom_feed_approach_value
global custom_feed_engage_value
global custom_feed_first_cut_value
global custom_feed_stepover_value
global custom_feed_cut_value
global custom_feed_traversal_value
global custom_feed_retract_value
global custom_feed_return_value
global custom_feed_departure_value
global custom_feed_rapid_text
global custom_feed_approach_text
global custom_feed_engage_text
global custom_feed_first_cut_text
global custom_feed_stepover_text
global custom_feed_cut_text
global custom_feed_traversal_text
global custom_feed_retract_text
global custom_feed_return_text
global custom_feed_departure_text
global custom_feed_rate_text
global custom_feed_base_value_text
global custom_flag_feed_type_count
global mom_seqnum
global custom_seqnum_length_old
global custom_seqnum_length_new
global custom_R_number
global custom_blanks_length_max
global custom_blanks_length_min
global custom_blanks_temp
global custom_blanks
global custom_blanks_1
global custom_blanks_2
# for NX8
global mom_feed_rapid_unit
global mom_feed_approach_unit
global mom_feed_engage_unit
global mom_feed_first_cut_unit
global mom_feed_stepover_unit
global mom_feed_cut_unit
global mom_feed_traversal_unit
global mom_feed_retract_unit
global mom_feed_return_unit
global mom_feed_departure_unit
global mom_feed_rapid_nominal_unit
global mom_feed_approach_nominal_unit
global mom_feed_engage_nominal_unit
global mom_feed_first_cut_nominal_unit
global mom_feed_stepover_nominal_unit
global mom_feed_cut_nominal_unit
global mom_feed_traversal_nominal_unit
global mom_feed_retract_nominal_unit
global mom_feed_return_nominal_unit
global mom_feed_departure_nominal_unit
global mom_feed_rapid_nominal_value
global mom_feed_approach_nominal_value
global mom_feed_engage_nominal_value
global mom_feed_first_cut_nominal_value
global mom_feed_stepover_nominal_value
global mom_feed_cut_nominal_value
global mom_feed_traversal_nominal_value
global mom_feed_retract_nominal_value
global mom_feed_return_nominal_value
global mom_feed_departure_nominal_value
global mom_ug_version
#MOM_output_literal "mom_ug_version = $mom_ug_version "
#MOM_output_literal "mom_feed_first_cut_nominal_value = $mom_feed_first_cut_nominal_value "
if {$mom_ug_version >= "8.0"} {
# -01-
if {[info exists mom_feed_cut_nominal_unit]} {
switch $mom_feed_cut_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
default { }
}
}
# -02-
if {[info exists mom_feed_rapid_nominal_unit]} {
switch $mom_feed_rapid_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_rapid_value [expr $mom_feed_rapid_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
# -03-
if {[info exists mom_feed_approach_nominal_unit]} {
switch $mom_feed_approach_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_approach_value [expr $mom_feed_approach_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
# -04-
if {[info exists mom_feed_engage_nominal_unit]} {
switch $mom_feed_engage_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_engage_value [expr $mom_feed_engage_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
# -05-
if {[info exists mom_feed_first_cut_nominal_unit]} {
switch $mom_feed_first_cut_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_first_cut_value [expr $mom_feed_first_cut_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
# -06-
if {[info exists mom_feed_stepover_nominal_unit]} {
switch $mom_feed_stepover_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_stepover_value [expr $mom_feed_stepover_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
# -07-
if {[info exists mom_feed_traversal_nominal_unit]} {
switch $mom_feed_traversal_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_traversal_value [expr $mom_feed_traversal_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
# -08-
if {[info exists mom_feed_retract_nominal_unit]} {
switch $mom_feed_retract_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_retract_value [expr $mom_feed_retract_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
# -09-
if {[info exists mom_feed_return_nominal_unit]} {
switch $mom_feed_return_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_return_value [expr $mom_feed_return_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
# -10-
if {[info exists mom_feed_departure_nominal_unit]} {
switch $mom_feed_departure_nominal_unit {
"None" { }
"mmpm" { }
"mmpr" { }
"Rapid" { }
"%Cut" { set mom_feed_departure_value[expr $mom_feed_departure_nominal_value / 100.0 * $mom_feed_cut_value] }
default { }
}
}
}
#MOM_output_literal "mom_feed_first_cut_value = $mom_feed_first_cut_value"
#-----------------------
#设置F输出格式flag,如无pui文件,则在def中修改格式
set custom_sys_leader_F_output $custom_sys_leader_F
set custom_sys_trailer_F_output $custom_sys_trailer_F
set custom_template_type [string toupper $mom_template_type]
if {[EQ_is_zero $mom_feed_rapid_value] && [EQ_is_zero $mom_feed_approach_value] && \
[EQ_is_zero $mom_feed_engage_value] && [EQ_is_zero $mom_feed_first_cut_value] && \
[EQ_is_zero $mom_feed_stepover_value] && [EQ_is_zero $mom_feed_traversal_value] && \
[EQ_is_zero $mom_feed_retract_value] && [EQ_is_zero $mom_feed_departure_value] } {
set custom_flag_feed_type_count 1
} elseif {
([EQ_is_zero $mom_feed_rapid_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_rapid_value]) && \ ([EQ_is_zero $mom_feed_approach_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_approach_value]) && \
([EQ_is_zero $mom_feed_engage_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_engage_value]) && \ ([EQ_is_zero $mom_feed_first_cut_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_first_cut_value]) && \
([EQ_is_zero $mom_feed_stepover_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_stepover_value]) && \
([EQ_is_zero $mom_feed_traversal_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_traversal_value]) && \
([EQ_is_zero $mom_feed_retract_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_retract_value]) && \
([EQ_is_zero $mom_feed_departure_value] || [EQ_is_equal $mom_feed_cut_value $mom_feed_departure_value]) } {
set custom_flag_feed_type_count 2
} else {
set custom_flag_feed_type_count 0
}
#测试用
global wjc_feed_output_format wjc_feed_single_output_format
if {$wjc_feed_output_format != 1 } {return}
if {$wjc_feed_single_output_format != 1} {
if {$custom_flag_feed_type_count == 1 || $custom_flag_feed_type_count == 2} {
return
}
}
set custom_R_number 0
set custom_blanks ""
set custom_blanks_1 " "
set custom_blanks_2 "; "
#-----------------------------------
set custom_feed_rapid_value [string trimright [string trimright [format %.3f $mom_feed_rapid_value] 0] .]
set custom_feed_approach_value [string trimright [string trimright [format %.3f $mom_feed_approach_value] 0] .]
set custom_feed_engage_value [string trimright [string trimright [format %.3f $mom_feed_engage_value] 0] .]
set custom_feed_first_cut_value [string trimright [string trimright [format %.3f $mom_feed_first_cut_value] 0] .]
set custom_feed_stepover_value [string trimright [string trimright [format %.3f $mom_feed_stepover_value] 0] .]
set custom_feed_cut_value [string trimright [string trimright [format %.3f $mom_feed_cut_value] 0] .]
set custom_feed_traversal_value [string trimright [string trimright [format %.3f $mom_feed_traversal_value] 0] .]
set custom_feed_retract_value [string trimright [string trimright [format %.3f $mom_feed_retract_value] 0] .]
set custom_feed_return_value [string trimright [string trimright [format %.3f $mom_feed_return_value] 0] .]
set custom_feed_departure_value [string trimright [string trimright [format %.3f $mom_feed_departure_value] 0] .]
#-----------------------------------
set custom_blanks_length_max [string length $custom_feed_rapid_value]
set custom_seqnum_length_old [expr [string length $mom_seqnum]-18]
set custom_blanks_length_max [expr $custom_seqnum_length_old+6+$custom_blanks_length_max]
#测试用
# MOM_output_literal "mom_seqnum:$mom_seqnum"
# MOM_output_literal "custom_seqnum_length_old:$custom_seqnum_length_old"
# MOM_output_literal "custom_blanks_length_max:$custom_blanks_length_max"
#-----------------------------------
#输出R模式程序头
#1
if {![EQ_is_zero $mom_feed_rapid_value] && ($mom_feed_cut_value != $mom_feed_rapid_value)} {
incr custom_R_number
set custom_blanks_length_min [string length $custom_feed_rapid_value]
#PB_CMD_wjc_blank_comment $custom_blanks_length_max $custom_blanks_length_min
MOM_output_literal "R\[$custom_R_number\]=${custom_feed_rapid_value}${custom_blanks}${custom_blanks_2}FEED_RAPID"
set custom_feed_rapid_text "=R\[$custom_R_number\]"
} else {
set custom_feed_rapid_text ""
}
#2
if {![EQ_is_zero $mom_feed_approach_value] && ($mom_feed_cut_value != $mom_feed_approach_value)} {
incr custom_R_number
set custom_blanks_length_min [string length $custom_feed_approach_value]
#PB_CMD_wjc_blank_comment $custom_blanks_length_max $custom_blanks_length_min
MOM_output_literal "R\[$custom_R_number\]=${custom_feed_approach_value}${custom_blanks}${custom_blanks_2}FEED_APPROACH"
set custom_feed_approach_text "=R\[$custom_R_number\]"
} else {
set custom_feed_approach_text ""
}
#3
if {![EQ_is_zero $mom_feed_engage_value] && ($mom_feed_cut_value != $mom_feed_engage_value)} {
incr custom_R_number
set custom_blanks_length_min [string length $custom_feed_engage_value]
#PB_CMD_wjc_blank_comment $custom_blanks_length_max $custom_blanks_length_min
MOM_output_literal "R\[$custom_R_number\]=${custom_feed_engage_value}${custom_blanks}${custom_blanks_2}FEED_ENGAGE"
set custom_feed_engage_text "=R\[$custom_R_number\]"
} else {
set custom_feed_engage_text ""
}
#4
if {![EQ_is_zero $mom_feed_first_cut_value] && ($mom_feed_cut_value != $mom_feed_first_cut_value)} {
incr custom_R_number
set custom_blanks_length_min [string length $custom_feed_first_cut_value]
#PB_CMD_wjc_blank_comment $custom_blanks_length_max $custom_blanks_length_min
MOM_output_literal "R\[$custom_R_number\]=${custom_feed_first_cut_value}${custom_blanks}${custom_blanks_2}FEED_FIRST_CUT"
set custom_feed_first_cut_text "=R\[$custom_R_number\]"
} else {
set custom_feed_first_cut_text ""
}
#5
if {![EQ_is_zero $mom_feed_stepover_value] && ($mom_feed_cut_value != $mom_feed_stepover_value)} {
incr custom_R_number
set custom_blanks_length_min [string length $custom_feed_stepover_value]
#PB_CMD_wjc_blank_comment $custom_blanks_length_max $custom_blanks_length_min
MOM_output_literal "R\[$custom_R_number\]=${custom_feed_stepover_value}${custom_blanks}${custom_blanks_2}FEED_STEPOVER"
set custom_feed_stepover_text "=R\[$custom_R_number\]"
} else {
set custom_feed_stepover_text ""
}
#6
if {![EQ_is_zero $mom_feed_cut_value]} {
incr custom_R_number
set custom_blanks_length_min [string length $custom_feed_cut_value]
#PB_CMD_wjc_blank_comment $custom_blanks_length_max $custom_blanks_length_min
MOM_output_literal "R\[$custom_R_number\]=${custom_feed_cut_value}${custom_blanks}${custom_blanks_2}FEED_CUT"
set custom_feed_cut_text "=R\[$custom_R_number\]"
} else {
set custom_feed_cut_text "250."
}
#7
if {![EQ_is_zero $mom_feed_traversal_value] && ($mom_feed_cut_value != $mom_feed_traversal_value)} {
incr custom_R_number
set custom_blanks_length_min [string length $custom_feed_traversal_value]
#PB_CMD_wjc_blank_comment $custom_blanks_length_max $custom_blanks_length_min
MOM_output_literal "R\[$custom_R_number\]=${custom_feed_traversal_value}${custom_blanks}${custom_blanks_2}FEED_TRAVERSAL"
set custom_feed_traversal_text "=R\[$custom_R_number\]"
} else {
set custom_feed_traversal_text ""
}
#8
if {![EQ_is_zero $mom_feed_retract_value] && ($mom_feed_cut_value != $mom_feed_retract_value)} {
incr custom_R_number
set custom_blanks_length_min [string length $custom_feed_retract_value]
#PB_CMD_wjc_blank_comment $custom_blanks_length_max $custom_blanks_length_min
MOM_output_literal "R\[$custom_R_number\]=${custom_feed_retract_value}${custom_blanks}${custom_blanks_2}FEED_RETRACT"
set custom_feed_retract_text "=R\[$custom_R_number\]"
} else {
set custom_feed_retract_text ""
}
#9
if {![EQ_is_zero $mom_feed_return_value]
推荐阅读
-
探究UG后处理中的进给速度R模式输出
-
包婷婷 (201550484)作业一 统计软件简介与数据操作-SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 R统计软件介绍 R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。 与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。 该语言的语法表面上类似 C,但在语义上是函数设计语言(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在"语言上计算"(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。 R是一个免费的*软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。 二、R语言 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点: 1.R是*软件。这意味着它是完全免费,开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。[2] 2.R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。[2] 3. 所有R的函数和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.[2] 4.R具有很强的互动性。除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF文件。另外,和其他编程语言和数据库之间有很好的接口。[2] 5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地.[2] R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。 但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。[3] 。 R语言的下载可以通过CRAN的镜像来查找。 R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由 中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和 USTC提供的。 三、stata Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过Stata. Journal获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是Statalist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 四、PYTHON
-
aps是什么意思_不同的富士APS-C画幅微单区别在哪里,档次是怎么划分的?-X-A系列原本指的是富士的入门级微单,最大的特点是没有使用富士X-Trans™CMOS 传感器,目前在售的有两款,分别是XA5和XA7。 富士(FUJIFILM)X-A5/XA5 15-45套机 富士(FUJIFILM)X-A7/XA7 15-45套机 目前这两款相机都处于历史最低价附近,XA5套机2699元,XA7套机3999元。XA5就是一个标准的入门级相机,定位就是时尚小巧自拍,在2699这个价位不要对它的性能有太多的奢求。 XA7价格来到了3999元,这就很有意思了,富士把入门型的相机价格推到了4000元,并且提供了自拍翻转屏和4K30P视频录制,这样一款相机就很有性价比了。 XE3是老款的中端相机,价格和入门级的XA7是一样的,都是3999元,这两款相机如何做选择呢?XE3有着更多的按键意味着更好的操控,但屏幕不是自拍翻转屏所以这点不如XA7好用。 要注意的是XE3用的是富士独有的X-Trans™CMOS III传感器,XA7是普通的2400万像素传感器,你可以理解为X-Trans才是富士的精髓。 富士(FUJIFILM)X-E3 15-45套机 当然,买新不买旧,XA7的新功能和自拍翻转屏可能会更适合你。 XT200是富士专门针对vlog市场推出的相机,其实之前的XA7也可以拍摄vlog,但XT200是富士官方宣传中的第一款vlog相机。数码防抖+3.5mm 麦克风口+自拍翻转屏+无裁切4K30P,这些都是XT200的优势,但这款相机也是普通的2400万像素传感器,没有用富士独有的X-Trans,可能是从价格角度考虑做了阉割吧。 富士(FUJIFILM)X-T200/XT200 微单相机 Vlog相机 富士XT30是我认为富士性价比最高的微单照相机,注意我说的是照相机。理由很简单,因为从拍照角度来看XT30和XTXT3几乎没有明显差距,主要是操控差了一些、视频性能大幅削弱,但好歹也是个有着双波轮+曝光补偿波轮+快门速度波轮的相机,操控方面不会太差的。视频方面也有着超采4K 30P的规格,支持F-log输出。 可以这么说,如果你只拍照,那么XT30是富士微单中性价比最高的,视频方面XT30也不差,只不过没有专业的10bit和4K60P而已。 富士(FUJIFILM)X-T30/XT30 15-45套机 XT3和XT4得放在一起说,这两款相机其实都挺好,420 10bit 4K60P的专业视频模式基本代表了APS-C画幅的上限水平。XT4还提升了电池续航增加了五轴防抖,配上富士独特的胶片滤镜,不管是拍照还是拍视频都非常优秀。 不要觉得这两款相机贵,同价位里能做到4K60P的微单也就是M43画幅的GGHGH5S,最便宜的G9机身也要7000多,这APS-C画幅的XT3机身接近8000也算合理价格范围内。除此之外的4K60P机身只有13998的松下S5和15999的佳能R6了。 富士(FUJIFILM)X-T3/XT3 1855套机 富士(FUJIFILM)X-T4/XT4 微单相机 套机(18-55mm) B站更新4K视频投稿后有很多人想拍摄4K升格,在很长一段时间里富士XT3和XT4是最优选,毕竟兼顾视频和拍照,对焦也还算能用。 X-Pro3和X-Pro2这两款微单可以算是旁轴相机,是富士官方意义上的旗舰级相机。从用料做工操控按键角度来说的确是旗舰级别,但视频性能方面只有4K30P,价格却比XT3还贵,可能这就是旁轴情怀带来的溢价吧。 富士(FUJIFILM)X-Pro3 微单相机 机身 黑色 我在之前的文章里提过很多次,有一些相机属于如果你想买你压根不会看测评,如果你犹豫那么这款相机不适合你,为什么这么说,因为有一些比较小众的相机可能在性能上并不好,但独特的外形、操控、体积、传承赋予了它独特的定位。譬如富士X-Pro系列微单就是旁轴的电子化,理光GR传承大师的扫街理念,尼康DF的外形源自胶片时代的相机,这些相机就不是针对大多数消费者的,定位就是小众。所以我说喜欢就买,不要考虑什么性能规格。 X100系列相机是一款不可换镜头的等效35mm旁轴数码相机,从外形看就是经典的复古造型。这两款相机和X-Pro3一样,如果你喜欢那就买,别犹豫, 你在市场上找不到同类型的其他数码相机,徕卡Q是28mm,索尼RX1R系列是35mm但外形不够复古,X100系列就是独特的你没有其他选择。 那么X100F和X100V该如何选择呢?X100F的镜头很一般甚至算不上好,如果我没记错的话和初代的X100是同款镜头,X100V的镜头是全新制作的很棒,X100V的机身性能也和XTX-Pro3差不多。 富士(FUJIFILM)X100F 数码相机 旁轴 2430万像素 富士(FUJIFILM)X100V 数码相机 旁轴 2610万像素 还是那句话,这两款相机也是那种如果你喜欢那就毫不犹豫下单的类型,而且这两款相机也没有竞品。 以前不推荐富士的原因是原厂镜头太贵,现在唯卓仕给富士出了四款可以自动对焦的大光圈镜头,覆盖35到130mm的焦段,可以基本满足人像摄影爱好者的需求。拍风景的话国产很多镜头厂商都有富士卡口的手动镜头可以选择,从这个角度来说富士微单就非常值得入手了。 和友商竞品相比: