【C#】代码整理备忘——1

1.wpf中弹出窗口信息提示:

MessageBox.Show("请先加载模型");

2.打开文件夹用:

System.Windows.Forms.FolderBrowserDialog dir = new System.Windows.Forms.FolderBrowserDialog();
       if (dir.ShowDialog() == System.Windows.Forms.DialogResult.OK)
       {
        //正式获得所有图片的路径                                   
       }

3.打开单个文件用:

                OpenFileDialog open_model_dialog = new OpenFileDialog();
                open_model_dialog.Filter = "模型文件|*.model";//此处限定可以选择的相关后缀文件
                open_model_dialog.Multiselect = false;
                open_model_dialog.Title = "加载模型";
                if (open_model_dialog.ShowDialog() ?? false)
                {
                    string model_file_path = open_model_dialog.FileName;
                    //如果模型文件不存在则抛出错误
                    CNTKLibraryManagedExamples.CNTKModelCalledByCSharp.ThrowIfFileNotExist(model_file_path, string.Format("Error: The model does not exist.", model_file_path));
                    //加载模型
                    model_func = Function.Load(model_file_path, DeviceDescriptor.CPUDevice);
                }

4.打try-catch的配合:

            try
            {
               

            }
            catch (Exception load_model_error)
            {
                MessageBox.Show("加载模型出错    错误信息:" + load_model_error.Message);
            }

5.Path的各种操作,需要引用System.IO:

class Program
    {
        static void Main(string[] args)
        {

            //获取当前运行程序的目录
            string fileDir = Environment.CurrentDirectory;
            Console.WriteLine("当前程序目录:"+fileDir);
            
            //一个文件目录
            string filePath = "C:\\JiYF\\BenXH\\BenXHCMS.xml";
            Console.WriteLine("该文件的目录:"+filePath);

            string str = "获取文件的全路径:" + Path.GetFullPath(filePath);   //-->C:\JiYF\BenXH\BenXHCMS.xml
            Console.WriteLine(str);
            str = "获取文件所在的目录:" + Path.GetDirectoryName(filePath); //-->C:\JiYF\BenXH
            Console.WriteLine(str);
            str = "获取文件的名称含有后缀:" + Path.GetFileName(filePath);  //-->BenXHCMS.xml
            Console.WriteLine(str);
            str = "获取文件的名称没有后缀:" + Path.GetFileNameWithoutExtension(filePath); //-->BenXHCMS
            Console.WriteLine(str);
            str = "获取路径的后缀扩展名称:" + Path.GetExtension(filePath); //-->.xml
            Console.WriteLine(str);
            str = "获取路径的根目录:" + Path.GetPathRoot(filePath); //-->C:\
            Console.WriteLine(str);
            Console.ReadKey();

        }
    }

参考于https://www.cnblogs.com/Joezhang433/p/10064535.html

5.Bitmap格式的读取:

Bitmap bmp = new Bitmap(Bitmap.FromFile(image_path));

6.将float或者double转换成两位小数的str:

String.Format("{0:F}", i)
或者
d.ToString("0.00###");

7.关于ref和out:
都是针对int这种类型的参数,传实参进去
1 关于重载

原则:有out|ref关键字的方法可以与无out和ref关键字的方法构成重载;但如想在out和ref间重载,编译器将提示:不能定义仅在ref和out的上的方法重载

2 关于调用前初始值

原则:ref作为参数的函数在调用前,实参必须赋初始值。否则编译器将提示:使用了未赋值的局部变量;

out作为参数的函数在调用前,实参可以不赋初始值。

3 关于在函数内,引入的参数初始值问题

原则:在被调用函数内,out引入的参数在返回前至少赋值一次,否则编译器将提示:使用了未赋值的out参数;

在被调用函数内,ref引入的参数在返回前不必为其赋初值。

但比不是说,引用类型就一定不会用到ref关键字,当我们试图将引用类型的重新赋值时

public void Changeref(RefClass rc)

{rc = new RefClass() { IntValue = 1000 };}

如果不加ref ,prc实际上是在函数内部将引用的地址,指向了另一new RefClass(),返回值会发现它的值未发生改变

8.通过递归获取总文件夹下的所有文件和所有子文件路径:

        private void GetAllImages(string path,List<string> image_patch_list)
        {
            //总的目录信息对象
            DirectoryInfo dir = new DirectoryInfo(path);
            //返回当前目录的文件列表
            FileInfo[] dir_files = dir.GetFiles();

            foreach (FileInfo file in dir_files)
            {
                if (file.FullName.ToUpper().EndsWith("JPG") | file.FullName.ToUpper().EndsWith("PNG")| 
                    file.FullName.ToUpper().EndsWith("BMP") | file.FullName.ToUpper().EndsWith("JPEG"))
                {
                    image_patch_list.Add(file.FullName);
                }                   
            }
            DirectoryInfo[] dir_subfolder = dir.GetDirectories();
            //获取子文件夹内的文件列表,递归遍历  
            foreach (DirectoryInfo d in dir_subfolder)
            {
                GetAllImages(d.FullName, image_patch_list);
            }
        }
                /// <summary>
        /// 通过递归过得总文件夹下的所有子文件夹路径
        /// </summary>
        /// <param name="path">总文件路径</param>
        /// <param name="image_patch_list">包含的所有子文件夹路径</param>
        private void GetAllFolder(string path, List<string> image_patch_list)
        {
            DirectoryInfo dir = new DirectoryInfo(path);
            DirectoryInfo[] dir_subfolder = dir.GetDirectories();
            FileInfo[] dir_files = dir.GetFiles();
            //如果该文件夹下无子文件夹
            if(dir_subfolder.Length == 0)
            {
                //把该文件夹路径加入
                image_patch_list.Add(dir.FullName);
            }
            //该文件夹下有子文件夹
            else
            {   
                //对每个子文件夹进行递归
                foreach(DirectoryInfo d in dir_subfolder)
                {
                    GetAllFolder(d.FullName, image_patch_list);
                }
            } 
        }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在风能领域,准确预测风速对于风电场的运行与管理至关重要。Matlab作为一个强大的数学计算和数据分析平台,被广泛应用于风速预测模型的构建。本文将深入探讨基于四种风速——随机风、基本风、阵风和渐变风的组合风速预测技术。 我们来理解这四种风速类型: 1. **随机风**:随机风是指风速呈现出随机性的变化,通常由大气湍流引起。在建模中,通常通过统计方法如高斯分布或Weibull分布来模拟这种不确定性。 2. **基本风**:基本风速是指在无特定扰动条件下的平均风速,它是长期观测结果的平均值,通常用于结构设计和风能评估。 3. **阵风**:阵风是短时间内风速显著增强的现象,对建筑物和风力发电机造成的主要威胁之一。阵风的预测涉及到风的脉动特性分析。 4. **渐变风**:渐变风是指风速随时间和空间逐渐变化的过程,常见于风向转变或地形影响下的风场变化。 在Matlab中,利用这四种风速类型进行组合预测,可以提高预测的准确性。预测模型可能包括以下几个步骤: 1. **数据收集与预处理**:收集历史风速数据,包括随机风、基本风、阵风和渐变风的数据,进行异常值检测、缺失值填充以及数据标准化。 2. **特征工程**:提取风速变化的相关特征,如平均值、标准差、极值、频率分布等,这些特征可能对预测有重要影响。 3. **模型选择**:可以选择多种预测模型,如时间序列分析(ARIMA、状态空间模型等)、机器学习算法(线性回归、决策树、支持向量机、神经网络等)或深度学习模型(LSTM、GRU等)。 4. **模型训练**:利用历史数据训练选定的模型,调整模型参数以优化性能,例如通过交叉验证来避免过拟合。 5. **模型验证与评估**:使用独立的测试集验证模型预测效果,常见的评估指标有均方误差(MSE)、平均绝对误差(MAE)和决定系数(R²)。 6. **组合预测**:结合四种风速的不同模型预测结果,可以采用加权平均、集成学习(如bagging、boosting)等方式,以提升整体预测精度。 7. **实时更新与动态调整**:实际应用中,模型需要不断接收新的风速数据并进行在线更新,以适应风场环境的变化。 通过以上步骤,可以构建一个综合考虑各种风速特性的预测系统,这对于风电场的功率输出预测、风电设的维护计划以及电网调度都具有重要价值。然而,需要注意的是,每个风场的地理环境、气候条件和设状况都有所不同,因此模型的建立应根据实际情况进行定制和优
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值