C++ //练习 14.36 使用前一个练习定义的类读取标准输入,将每一行保存为vector的一个元素。

C++ Primer(第5版) 练习 14.36

练习 14.36 使用前一个练习定义的类读取标准输入,将每一行保存为vector的一个元素。

环境:Linux Ubuntu(云服务器)
工具:vim

 

代码块
class PrintString{
	public:
	PrintString(istream &in = cin): is(in){}
	string operator(){
		string s;
		is>>s;
		if(is){
			return s;
		else{
			return "";
		}
	}

	private:
	istream &is;
};

int main(){
	PrintString in;
	vector<string> str{in(), in(), in()};
	return 0;
}
  • 17
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为了设计数字带通滤波器,我们需要先确定滤波器的通带和阻带范围,以及通带和阻带的最大衰减量。假设我们的设计指标如下: - 通带频率范围为 $f_{p1} = 0.2\pi$ 和 $f_{p2} = 0.3\pi$; - 阻带频率范围为 $f_{s1} = 0.1\pi$ 和 $f_{s2} = 0.4\pi$; - 通带最大波纹为 $A_p = 0.5$ dB; - 阻带最小衰减为 $A_s = 40$ dB。 接下来,我们可以使用凯塞窗设计数字带通滤波器。具体步骤如下: 1. 确定滤波器的长度 $N$。根据凯塞窗的特性,滤波器的长度应该是比其他窗口要长的。通常可以选择 $N = \frac{A_s - 7.95}{14.36(f_{s2} - f_{s1})} + 1$,其中 $7.95$ 和 $14.36$ 是凯塞窗的特定常数。 2. 生成凯塞窗 $w[n]$,长度为 $N$。 3. 计算理想的频率响应 $H_d(e^{j\omega})$。对于数字带通滤波器而言,理想的频率响应应该是一个矩形函数,即在通带内为 $1$,在阻带内为 $0$。可以使用以下公式计算: $$ H_d(e^{j\omega}) = \begin{cases} 1 & \text{if } f_{p1} \leq \omega \leq f_{p2} \\ 0 & \text{if } f_{s1} \leq \omega \leq f_{s2} \\ \text{interpolate} & \text{otherwise} \end{cases} $$ 其中,$\text{interpolate}$ 表示需要进行插值处理,以便在通带和阻带之间的过渡区域得到平滑的过渡。 4. 将 $H_d(e^{j\omega})$ 乘以凯塞窗 $w[n]$,得到实际的频率响应 $H(e^{j\omega})$: $$ H(e^{j\omega}) = H_d(e^{j\omega}) w[n] $$ 5. 对 $H(e^{j\omega})$ 进行逆变换得到时域系数 $h[n]$: $$ h[n] = \frac{1}{2\pi} \int_{-\pi}^{\pi} H(e^{j\omega}) e^{j\omega n} d\omega $$ 6. 将 $h[n]$ 作为数字带通滤波器的系数,即可得到所需的滤波器。 需要注意的是,由于凯塞窗的特性,该滤波器在通带内可能会有一定的波纹,但是其阻带衰减应该能够满足指标要求。如果需要更高的通带平坦度,可以选择其他窗口函数进行设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Navigator_Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值