如何用linux写pcc程序,linux基本命令

Linux 系统区分英文字符的大小写。比如,myfile, Myfile 和

myFILE表示的是三个不同的文件。同样,用户密码和登录名也需要区分大小写(这里沿用了Unix 和 C

语言的命名规则)。命名目录和命名文件的规则是相同的。除非有特别的原因,否则用户创建的文件和目录名要使用小写字符。大多数的 Linux

命令也使用小写字符。

Linux

系统下的文件名长度最多可到256个字符。通常情况下,文件名的字符包括:字母、数字、”.”(点)、”_”(下划线)和”-“(连字符)。Linux

允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义)

在Linux 的 命令解释器(shell)中有特殊的含义(shell 类似于 DOS下的命令处理器

COMMAND.COM)。这样的转意字符有:”?”(问号),”*”(星号), ” “(空格), “$”(货币符),

“&”, 扩号等等。在文件名中应尽量避免使用这些字符。文件名中可以有”

“(空格),但建议用户用”_”(下划线)来替代。

“/”

既可代表目录树的根也可作为路径名中的分隔符(类似DOS下的”\),因此”/”不能出现在文件名中。

和DOS一样,”.” 和 “..” 分别用来表示”当前目录”和”父目录”,

因此它们也不能作为文件名。

正如DOS 中一样,我们不能将文件命名为 . 或者 ..

(点或者双点)——它们分别代表当前目录和当前目录的父目录(上一级目录)。这跟DOS中是完全一致的。

下面列出了一些转意字符及其意义:

* = 用于匹配任意长度大于等于零的字符序列。以 .

(点)开头的文件名除外。

? = 用于匹配任意单个字符

[abC1] =

用于匹配枚举集合中任意单个字符。比例中,集合由‘a’,‘b’,C’,‘1’组成。

[a-z] = 用于匹配任意小字字母

[A-F] = 用于匹配任意大写字母

[0-9] = 用于匹配任意个位数字

[a-zA-Z0-9] = 用于匹配任意字母(大小写)或者数字。

\

(反斜线)也是一个特殊的字符。它屏蔽后继特殊字母的特殊含义(转意),使该字符仅取其符号所代表的字面意义。

例: 下面的命令会列出当前目录中除了文件名以 . 开头的文件之外的任何文件。

ls *

与此等价的命令是ls 或者 dir (不需要后跟 “*”)。 文件名以 .

开头的文件不被列出是因为 “.”是文件名的首字符,它并不与“*”匹配。我们可以把文件名以 .

开头的文件等价地理解成DOS中隐藏文件。使用ls –a (带 all 选项的ls 命令)或者 ls .*

命令来查看这些“点”文件。“点”文件在用户的home目录中很常见。它们通常是用户级的配置文件。

以下命令可列出当前目录中文件名含 . 的任何文件 (文件名以点开头的除外)。

ls *.*

以下命令可列出当前目录中文件名含两个点的任何文件(文件名以点开头的除外)。

ls *.*.*

请注意Linux中没有与DOS中文件扩展名相应的概念,但是你可以使用扩展名。例如,一个文件可以命名为 my_text.txt.zip

。另有一些DOS中的命名特色在Linux中是完全找不到的(比方说Micro~1.doc )。

以下的命令会找出扩展名为“htm”后再跟任意一个字符的文件:

locate *.htm?

以下命令可列出当前目录中所有文件名以a,b或者任意大写字母开头的文件:

ls [abA-Z]*

以下命令可列出当前目录中所有文件名以a开头,以n结尾的文件:

ls a*n

命令行自动完成是一个有用的功能——使用[Tab]键可以极大的节约时间,使处理复杂的长文件名变得轻松。例如,使用自动完成的功能,可以极大的减化输入以下这个长文件名的工作。

dir Eurosong\ 2000\ Olson\ Brothers\ -\

Fly\ on\ the\ wings\ of\ love\ \(denmark\).mp3

我只要输入

dir

Eu

如果没有其他文件的文件名以Eu

开头,输入之后,系统会自动输入文件名的其余部分。

如果还有其他文件的文件名也以Eu开头,我们可以查看一下可能的选择(系统会列出),进一步输入文件名中的下一两个字符,从而使文件的选择唯一化,系统的自动写成功能就可以启动完成整个长文件名的输入了。文件名中的反斜线作用在于提示系统其后继的字符“空格”仅取其字面意义,即,文件名中包含的确实是空格。

文件名中的有“怪”字符怎么办?大部分问题可以通过自动完成功能解决。

另外,处理文件名中含有转意字符的文件,我们可以使用成对的‘’(单引号)。由于这些特殊的转意字符被单引号引用,命令解释器不会试图去解释其特殊意义。例如,给一个名为my

file*的文件更名(文件名中含空格和*), 我们可以使用:

mv ‘my file*’

filename_without_weird_characters.txt

请注意我使用了一对‘’号

(单引号)。使用成对的“”(双引号)引用通常没有使用‘’有效。如果你使用“”号(双引号),

部份转意字符可能会被命令解释器加以解释(这就意味着它们可能被转意,而不是保持字面意义)。

跟从UNIX的传统,在Linux上,创建文件时,我们可以在文件名中可以使用几乎任何字符,包括不可打印字符(控制字符)。但是这情况非常少见。如果你在遇到文件名使用了这些字符,你可能会感觉很异样。我通常会在适当的位置使用一个转意字符*对这种文件进行重命名。我会先使用ls命令确认我要重命名的文件的文件名,然后对这个文件进行更名(使用mv

命令):

ls –l myfile*y.html

mv myfile*y.html myfile.html

(此例中我假定非标准字符位于字母e和y之间)

这里举一个关于在文件名中使用非常规字符的极端的例子: 创建一个文件名以短横线 –

开头的文件,再等它删除。 用常规的删除命令似乎没有办法(因为短横钱通常是用来引导命令选项的)。例如:

dir > -junk

以上命令将创建一个以-junk为名的文件(跟DOS类似,符号

> 将dir

命令的输出重定向到一个名为“-junk”的文件。常规的删除文件命令无法把这个文件删除。我们需要使用:

rm ./-junk

文件名前的./ 表示当前目录。在此其目的是避免文件名把的首字符 –

被命令解释器当作rm命令的选项引导。事实上没有必要在文件名中使用这些特殊字符。遵从传统的命名规则,不会过多地使事情复杂化。

除了使用自动完成,单引号,双引号之外,我们也可以利用 \ (反斜线)

对文件名中包含了非常规字符的文件进行操作。反斜线的作用在于屏蔽其后继字符的特殊意义。例如,我可以使用如下命令创建一个以 *?[

为文件名的文件:

touch \*\?\[

(touch

命令创建一个空文件。如果同名文件已存在,则改变该文件最后更新的日期/时间)。

在MATLAB中,您可以使用以下步骤实现PCC-OFDM程序: 1.生成信号序列:使用MATLAB中的randn函数生成随机信号序列。假设我们需要一个长度为N的信号序列,使用以下代码生成: ``` N = 1024; % 信号序列长度 x = randn(1, N); % 随机信号序列 ``` 2.对信号序列进行OFDM调制:将信号序列进行OFDM调制,使用以下代码生成: ``` M = 16; % 调制阶数 NCP = 8; % 循环前缀长度 nFFT = 64; % FFT点数 % 对信号序列进行OFDM调制 [ofdm_symbol, pilot_symbols] = ofdm_mod(x, M, NCP, nFFT); ``` 其中,ofdm_mod是自定义的OFDM调制函数,用于将信号序列进行OFDM调制,生成OFDM符号,并添加循环前缀和导频符号。pilot_symbols是导频符号序列。 3.对OFDM符号进行PCC编码:使用PCC编码器对OFDM符号进行编码。假设使用4个PCC码字对OFDM符号进行编码,使用以下代码实现: ``` num_PCC = 4; % PCC码字数 pcc_symbols = pcc_encode(ofdm_symbol, num_PCC); ``` 其中,pcc_encode是自定义的PCC编码函数,用于对OFDM符号进行PCC编码,生成PCC符号序列。 4.对PCC符号进行调制:使用QPSK调制对PCC符号进行调制,使用以下代码实现: ``` pcc_mod_symbols = qpsk_mod(pcc_symbols); ``` 其中,qpsk_mod是自定义的QPSK调制函数,用于对PCC符号进行QPSK调制。 5.添加导频符号:将导频符号插入到PCC符号序列中,使用以下代码实现: ``` pilot_mod_symbols = qpsk_mod(pilot_symbols); % 导频符号QPSK调制 pcc_mod_symbols = insert_pilot(pcc_mod_symbols, pilot_mod_symbols); % 插入导频符号 ``` 其中,insert_pilot是自定义的导频符号插入函数,用于将导频符号插入到PCC符号序列中。 6.发送信号:生成信道并发送信号,使用以下代码实现: ``` SNR_dB = 10; % 信噪比 channel = randn(1, length(pcc_mod_symbols)); % 信道模型 rx_signal = send_signal(pcc_mod_symbols, channel, SNR_dB); % 发送信号并添加噪声 ``` 其中,send_signal是自定义的发送信号函数,用于生成信道并发送信号,并添加高斯白噪声。 7.接收信号并解码:接收信号并对其进行解码,使用以下代码实现: ``` rx_pcc_mod_symbols = recv_signal(rx_signal, channel, SNR_dB); % 接收信号并去除噪声 rx_pcc_symbols = remove_pilot(rx_pcc_mod_symbols, pilot_mod_symbols); % 去除导频符号 rx_symbols = qpsk_demod(rx_pcc_symbols); % 解调PCC符号 rx_ofdm_symbols = pcc_decode(rx_symbols, num_PCC); % 解码OFDM符号 ``` 其中,recv_signal是自定义的接收信号函数,用于接收信号并去除高斯白噪声。remove_pilot是自定义的导频符号去除函数,用于从接收到的PCC符号序列中去除导频符号。qpsk_demod是自定义的QPSK解调函数,用于对接收到的PCC符号进行解调。pcc_decode是自定义的PCC解码函数,用于对解调后的PCC符号进行解码,得到OFDM符号序列。 8.对解码后的信号进行FFT:对解码后的OFDM符号进行FFT变换,使用以下代码实现: ``` rx_x = ofdm_demod(rx_ofdm_symbols, NCP, nFFT); % 对OFDM符号进行解调 ``` 其中,ofdm_demod是自定义的OFDM解调函数,用于将解码后的OFDM符号进行解调,得到原始信号序列rx_x。 以上就是PCC-OFDM程序的MATLAB实现步骤。注意,在以上代码中,自定义函数ofdm_mod、pcc_encode、qpsk_mod、insert_pilot、send_signal、recv_signal、remove_pilot、qpsk_demod、pcc_decode、ofdm_demod均需自行实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值