编写数据文件处理程序,要求:(1)读取数据文件内容,显示数据文件行数;(2)申请数据内存存放数据文件;(3)计算第2-4列数据与第1列数据对比的MSE值和PSNR值,并显示输出。这个是题目,上面的照片是我能打出来的最大程度
printf("PSNR值:%lf\n",psnr);
麻烦采纳一下哈,谢谢啦
下面是一个简单的数据文件处理程序的示例代码,用于读取数据文件并进行数据处理:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int main() {
// 读取数据文件
string filename = "data.txt";
ifstream infile(filename);
if (!infile) {
cerr << "Error: Unable to open file " << filename << endl;
return 1;
}
// 统计文件行数
int num_lines = 0;
string line;
while (getline(infile, line)) {
num_lines++;
}
infile.close();
cout << "Number of lines in the file: " << num_lines << endl;
// 申请内存并读取数据
vector<vector<double>> data(num_lines, vector<double>(4));
infile.open(filename);
for (int i = 0; i < num_lines; i++) {
for (int j = 0; j < 4; j++) {
infile >> data[i][j];
}
}
infile.close();
// 计算 MSE 和 PSNR
double mse = 0.0;
double max_value = 255.0;
for (int i = 0; i < num_lines; i++) {
double diff = data[i][1] - data[i][0];
mse += diff * diff;
}
mse /= num_lines;
double psnr = 10 * log10(max_value * max_value / mse);
// 输出结果
cout << "MSE: " << mse << endl;
cout << "PSNR: " << psnr << endl;
return 0;
}
在这个代码中,我们首先读取数据文件并统计文件行数。然后我们申请内存并读取数据文件中的数据。接下来,我们计算第 2-4 列数据与第 1 列数据的 MSE 值和 PSNR 值。最后,我们输出计算结果。
需要注意的是,这个程序假定数据文件中每行有 4 列数据,其中第 1 列数据为参考值,第 2-4 列数据为需要计算的值。如果数据文件的格式不同,需要根据实际情况修改程序。