1001. A+B Format

本文介绍了一个使用C++解决A+B问题的程序实例。该程序通过读取两个整数并计算它们的和,然后以特定格式输出结果,包括处理负数及千位分隔符。适用于初学者理解基本输入输出及格式化输出。
// 1001. A+B Format.cpp: 主项目文件。

#include "stdafx.h"
#include<cstdio>

int main()
{
	char str[11];
	int a,b;
	while(~scanf("%d%d",&a,&b)){
		int sum=a+b;
		if(sum==0){
			printf("0\n");
			continue;
		}
		if(sum<0){
			putchar('-');
			sum=-sum;
		}
		int cnt=0;
		while(sum){
			str[cnt++]=sum%10+'0';
			sum/=10;
		}
		for(int i=cnt-1;i>=0;i--){
			putchar(str[i]);
			if(i%3==0&&i!=0)
				putchar(',');
		}
		putchar('\n');
	}
    return 0;
}

modified_data [[ 0.70710678+0.70710678j 0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678-0.70710678j -0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678-0.70710678j -0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678+0.70710678j 0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678+0.70710678j -0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678+0.70710678j 0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678+0.70710678j 0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678+0.70710678j -0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678+0.70710678j -0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678+0.70710678j -0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678-0.70710678j -0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ]] modified_data [[ 0.70710678+0.70710678j 0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678-0.70710678j -0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678-0.70710678j -0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678+0.70710678j 0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678+0.70710678j -0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678+0.70710678j 0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678+0.70710678j 0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678+0.70710678j -0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678+0.70710678j -0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0.70710678-0.70710678j 0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678+0.70710678j -0.70710678+0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [-0.70710678-0.70710678j -0.70710678-0.70710678j] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ] [ 0. +0.j 0. +0.j ]] 已处理并保存: /home/data/low_overhead_dmrs/SUMIMO_simulation_data/16QAM/Old_SUMIMO2T4R_CDLC_add0_MCS10_SNR_11p6_Sparse_5PRB/TxDMRS/Training_Rs_1.mat
最新发布
09-25
从您提供的输出数据来看,`modified_data` 是一个包含复数(complex numbers)的二维数组(形状可能是 `(N, 2)`),其中大部分元素已被成功置零(`0. + 0.j`),但仍保留了一些非零的复数元素(如 `0.70710678+0.70710678j` 和 `-0.70710678-0.70710678j`)。 ### **问题分析** 1. **数据格式**: - 数据是复数(`a + bj`),其中 `a` 是实部,`b` 是虚部。 - 非零值看起来像是归一化的 QPSK 或 16QAM 符号(如 `±0.7071 ± 0.7071j` 是 QPSK 的标准值)。 2. **置零逻辑**: - 您的代码似乎只对某些特定位置(如 `group_rs[:, 2, idx, :]`)进行了置零操作,但其他位置可能仍然保留原始数据。 - 如果目标是 **完全稀疏化**(即所有非指定位置都置零),可能需要调整置零范围。 3. **重复输出**: - 您提供的 `modified_data` 似乎重复了两次,可能是打印时的冗余。 --- ### **改进建议** #### **1. 确保所有目标位置被正确置零** 如果您的目标是 **仅保留特定位置的符号**(如每 12 个符号中的某些位置),其余置零,可以优化置零逻辑: ```python # 示例:对 group_rs 的特定维度置零 for idx in range(data.shape[2]): # 遍历第3维度(长度120) group_idx = idx // 12 # 计算当前属于哪一组(0-9) pos_in_group = idx % 12 # 计算组内位置(0-11) # 判断是否要置零(根据您的规则) if group_idx in {2, 7}: # 特殊组 if pos_in_group not in {0, 2, 4, 6, 8, 10}: # 保留这些位置 data[:, 2, idx, :] = 0 # 其余置零 else: # 普通组 if pos_in_group not in {2, 4, 8, 10}: # 保留这些位置 data[:, 2, idx, :] = 0 # 其余置零 ``` #### **2. 优化打印输出** 避免打印整个数组,改为统计非零元素: ```python def print_sparsity_stats(data, var_name): total_elements = data.size nonzero_elements = np.count_nonzero(data) sparsity = 100 * (1 - nonzero_elements / total_elements) print(f"{var_name} 稀疏化统计: 总元素={total_elements}, 非零元素={nonzero_elements}, 稀疏度={sparsity:.2f}%") ``` #### **3. 完整改进代码** ```python import os import scipy.io import numpy as np def process_and_save_sparse_5PRB(source_folder, target_folder, filename_pattern, var_name): os.makedirs(target_folder, exist_ok=True) # 定义保留位置规则(组内索引) keep_positions = { 2: {0, 2, 4, 6, 8, 10}, # 第2组保留的位置 7: {0, 2, 4, 6, 8, 10}, # 第7组保留的位置 } default_keep = {2, 4, 8, 10} # 其他组保留的位置 for i in range(1, 6): source_file = os.path.join(source_folder, filename_pattern.format(i)) target_file = os.path.join(target_folder, filename_pattern.format(i)) # 读取数据 mat_data = scipy.io.loadmat(source_file) data = mat_data[var_name].copy() # 遍历目标维度(假设是第3维度,索引2) for idx in range(data.shape[2]): group_idx = idx // 12 pos_in_group = idx % 12 # 判断是否要置零 if group_idx in keep_positions: if pos_in_group not in keep_positions[group_idx]: data[:, 2, idx, :] = 0 # 置零 else: if pos_in_group not in default_keep: data[:, 2, idx, :] = 0 # 置零 # 保存并打印统计 scipy.io.savemat(target_file, {var_name: data}) print_sparsity_stats(data[:, 2, :, :], f"{filename_pattern.format(i)}/{var_name}") def print_sparsity_stats(data, label): total = data.size nonzero = np.count_nonzero(data) sparsity = 100 * (1 - nonzero / total) print(f"{label}: 稀疏度={sparsity:.2f}% (非零元素={nonzero}/{total})") # 示例调用 process_and_save_sparse_5PRB( source_folder="/home/data/low_overhead_dmrs/SUMIMO_simulation_data/16QAM/Old_SUMIMO2T4R_CDLC_add0_MCS10_SNR_11p6/TxDMRS", target_folder="/home/data/low_overhead_dmrs/SUMIMO_simulation_data/16QAM/Old_SUMIMO2T4R_CDLC_add0_MCS10_SNR_11p6_Sparse_5PRB/TxDMRS", filename_pattern="Training_Rs_{}.mat", var_name="group_rs" ) ``` --- ### **关键改进点** 1. **更清晰的置零规则**: - 使用字典 `keep_positions` 明确每组保留的位置。 - 默认保留 `{2, 4, 8, 10}`,特殊组(如第2、7组)保留更多位置。 2. **稀疏度统计**: - 打印非零元素比例,验证稀疏化效果。 3. **避免冗余打印**: - 不再打印整个数组,而是输出关键统计信息。 --- ### **下一步建议** 1. **验证数据正确性**: - 检查置零后的数据是否符合预期(如非零符号是否仅出现在指定位置)。 2. **扩展到其他变量**: - 对 `group_freqdata`、`group_lsresult` 等变量应用相同逻辑。 3. **性能优化**: - 如果数据量很大,可以用 `numba` 加速循环。 如果需要进一步调整(如修改保留位置规则),请提供更详细的需求!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值