幅频特性曲线分析及使用WPF绘制

文章目录

  • 1、一阶惯性环节的幅频特性曲线分析及绘制
  • 2、二阶系统的幅频特性曲线分析及绘制
  • 3、一般的系统
  • 4、上位机代码实现
    • 4.1 一阶惯性系统
    • 4.2 二阶系统
  • 5、稳定裕度
    • 5.1 幅值裕度
    • 5.2 相角裕度
  • 参考

1、一阶惯性环节的幅频特性曲线分析及绘制

在这里插入图片描述
这里的a和b可以根据系统的不同修改,然后在0-50Hz内以1/10000的分辨率取点,可得对数幅频特性曲线(1/0.5s+1):
在这里插入图片描述
MATLAB脚本实现传递函数(1/0.5s+1)的伯德图绘制:

% 0.001 - 10^1.5  10000个点
w = logspace(-3,2,10000);
num = [0 1];
f = [0.5 1];
sys = tf(num,f);
P = bodeoptions;
% 横坐标为Hz
P.FreqUnits = 'Hz';
bode(sys,w,P)

在这里插入图片描述

2、二阶系统的幅频特性曲线分析及绘制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MATLAB脚本实现传递函数(2/(0.01s+1)(0.2s+1)的伯德图绘制:

% 0.001 - 10^1.5  10000个点
w = logspace(-3,2,10000);
num = [0 2];
f1 = [0.01 1];
f2 = [0.2 1];
den = conv(f1,f2);
sys = tf(num,den);
P = bodeoptions;
% 横坐标为Hz
P.FreqUnits = 'Hz';
bode(sys,w,P)

在这里插入图片描述

3、一般的系统

在这里插入图片描述

4、上位机代码实现

源码及Oxyplot源码下载地址: WPF实现bode图demo源码

4.1 一阶惯性系统

<Page x:Class="WPF_Demo_V2.View.LogChartPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WPF_Demo_V2.View"xmlns:oxyplot="http://oxyplot.org/wpf"mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"Title="LogChartPage"><Grid><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="5*"/><ColumnDefinition/></Grid.ColumnDefinitions><oxyplot:PlotView Model="{Binding MyPlotModelUp}"/><oxyplot:PlotView Grid.Row="1"  Model="{Binding MyPlotModelDown}"/><StackPanel Grid.Row="0" Grid.Column="1" Orientation="Vertical"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="0.8*"/><ColumnDefinition/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions><TextBlock Text="a:" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Column="1" Text="{Binding A}" Margin="2"></TextBox><TextBlock Text="b:" Grid.Row="1" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="1" Grid.Column="1" Text="{Binding B}" Margin="2"></TextBox><TextBlock Text="X max:" Grid.Row="2" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="2" Grid.Column="1" Text="{Binding X_max}" Margin="2"></TextBox><TextBlock Text="factor:" Grid.Row="3" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="3" Grid.Column="1" Text="{Binding Factor}" Margin="2" ToolTip="X_max/factor 为最小分辨率"></TextBox><TextBlock Text="Y1 min:" Grid.Row="4" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Y1_min}" Margin="2"></TextBox><TextBlock Text="Y1 max:" Grid.Row="5" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="5" Grid.Column="1" Text="{Binding Y1_max}" Margin="2"></TextBox><TextBlock Text="Y2 min:" Grid.Row="6" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Y2_min}" Margin="2"></TextBox><TextBlock Text="Y2 max:" Grid.Row="7" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="7" Grid.Column="1" Text="{Binding Y2_max}" Margin="2"></TextBox><Button Grid.Row="8" Grid.ColumnSpan="2" Content="确定" Margin="20,2" Command="{Binding sureCommand}"/></Grid><Image Source="../Resource/Image/function.png"/></StackPanel></Grid>
</Page>
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Series;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WPF_Demo_V2.ViewModel
{partial class LogChartViewModel: ObservableObject{#region 全局变量//UInt32 LEN = 50;//UInt32 FACT = 10000;double[] Gain;double[] Phase;FunctionSeries upFunctionSeries=new FunctionSeries();FunctionSeries downFunctionSeries=new FunctionSeries();#endregion#region 构造函数public LogChartViewModel(){upFunctionSeries.Title = "Gain";downFunctionSeries.Title = "Phase";}#endregion#region 属性[ObservableProperty]public PlotModel _MyPlotModelUp;[ObservableProperty]public PlotModel _MyPlotModelDown;[ObservableProperty]public double _A = 0.5;[ObservableProperty]public double _B = 1;[ObservableProperty]public int _X_max = 50;[ObservableProperty]public int _Factor = 10000;[ObservableProperty]public double _Y1_max = 0;[ObservableProperty]public double _Y1_min = -50;[ObservableProperty]public double _Y2_max = 0;[ObservableProperty]public double _Y2_min = -90;#endregion#region 方法public PlotModel PlotModelInit(string xtitle,string ytitle,double ymin,double ymax){var plotModel = new PlotModel();//plotModel.Title = "Log Paper";var logarithmicAxis1 = new LogarithmicAxis();logarithmicAxis1.MajorGridlineColor = OxyColor.FromArgb(40, 0, 0, 139);logarithmicAxis1.MajorGridlineStyle = LineStyle.Solid;logarithmicAxis1.Maximum = X_max;logarithmicAxis1.Minimum = 1/ (double)Factor;logarithmicAxis1.MinorGridlineColor = OxyColor.FromArgb(20, 0, 0, 139);logarithmicAxis1.MinorGridlineStyle = LineStyle.Solid;logarithmicAxis1.Position = AxisPosition.Bottom;if (!string.IsNullOrEmpty(xtitle)) logarithmicAxis1.Title = xtitle;plotModel.Axes.Add(logarithmicAxis1);var linearAxis1 = new LinearAxis();linearAxis1.MajorGridlineStyle = LineStyle.Solid;linearAxis1.MinorGridlineStyle = LineStyle.Dot;linearAxis1.Maximum = ymax;linearAxis1.Minimum = ymin;linearAxis1.Title = ytitle;plotModel.Axes.Add(linearAxis1);return plotModel;}[RelayCommand]private void sure(){if(upFunctionSeries.Points.Count>0) upFunctionSeries.Points.Clear();if (downFunctionSeries.Points.Count > 0)downFunctionSeries.Points.Clear();if (MyPlotModelUp != null) {if (MyPlotModelUp.Series.Count > 0) MyPlotModelUp.Series.Clear();}if(MyPlotModelDown != null){if (MyPlotModelDown.Series.Count > 0) MyPlotModelDown.Series.Clear();}MyPlotModelUp = PlotModelInit("", "Magnitude[dB]", Y1_min, Y1_max);MyPlotModelDown = PlotModelInit("Frequency[Hz]", "Phase[deg]", Y2_min, Y2_max);Gain = new double[X_max * Factor];Phase = new double[X_max * Factor];for (int i = 0; i < X_max * Factor; i++){double temp_a = 2 * Math.PI * A * (i / (double)Factor);double temp_2 = Math.Pow(temp_a, 2) + Math.Pow(B, 2);double temp_sqrt = 1 / Math.Sqrt(temp_2);double temp = Math.Abs(temp_sqrt);Gain[i] = 20 * Math.Log10(temp);Phase[i] = -Math.Atan(temp_a / (double)B) / Math.PI * 180;upFunctionSeries.Points.Add(new DataPoint(i / (double)Factor, Gain[i]));downFunctionSeries.Points.Add(new DataPoint(i / (double)Factor, Phase[i]));}MyPlotModelUp.Series.Add(upFunctionSeries);MyPlotModelDown.Series.Add(downFunctionSeries);MyPlotModelUp.ResetAllAxes();MyPlotModelUp.InvalidatePlot(true);MyPlotModelDown.ResetAllAxes();MyPlotModelDown.InvalidatePlot(true);}#endregion}
}

4.2 二阶系统

<Page x:Class="WPF_Demo_V2.View.Log3ChartPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WPF_Demo_V2.View"xmlns:oxyplot="http://oxyplot.org/wpf"mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"Title="Log3ChartPage"><Grid><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="5*"/><ColumnDefinition/></Grid.ColumnDefinitions><oxyplot:PlotView Model="{Binding MyPlotModelUp}"/><oxyplot:PlotView Grid.Row="1"  Model="{Binding MyPlotModelDown}"/><StackPanel Grid.Row="0" Grid.Column="1" Orientation="Vertical"><Grid><Grid.ColumnDefinitions><ColumnDefinition Width="0.8*"/><ColumnDefinition/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions><TextBlock Text="a:" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Column="1" Text="{Binding A}" Margin="2"></TextBox><TextBlock Text="b:" Grid.Row="1" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="1" Grid.Column="1" Text="{Binding B}" Margin="2"></TextBox><TextBlock Text="c:" Grid.Row="2" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="2" Grid.Column="1" Text="{Binding C}" Margin="2"></TextBox><TextBlock Text="X max:" Grid.Row="3" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="3" Grid.Column="1" Text="{Binding X_max}" Margin="2"></TextBox><TextBlock Text="factor:" Grid.Row="4" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Factor}" Margin="2" ToolTip="X_max/factor 为最小分辨率"></TextBox><TextBlock Text="Y1 min:" Grid.Row="5" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="5" Grid.Column="1" Text="{Binding Y1_min}" Margin="2"></TextBox><TextBlock Text="Y1 max:" Grid.Row="6" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Y1_max}" Margin="2"></TextBox><TextBlock Text="Y2 min:" Grid.Row="7" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="7" Grid.Column="1" Text="{Binding Y2_min}" Margin="2"></TextBox><TextBlock Text="Y2 max:" Grid.Row="8" Foreground="White" HorizontalAlignment="Right"/><TextBox Grid.Row="8" Grid.Column="1" Text="{Binding Y2_max}" Margin="2"></TextBox><Button Grid.Row="9" Grid.ColumnSpan="2" Content="确定" Margin="20,2" Command="{Binding sureCommand}"/></Grid><Image Source="../Resource/Image/function.png"/></StackPanel></Grid>
</Page>
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using OxyPlot.Axes;
using OxyPlot.Series;
using OxyPlot;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WPF_Demo_V2.ViewModel
{partial class Log3ChartViewModel: ObservableObject{#region 全局变量//UInt32 LEN = 50;//UInt32 FACT = 10000;double[] Gain;double[] Phase;FunctionSeries upFunctionSeries = new FunctionSeries();FunctionSeries downFunctionSeries = new FunctionSeries();#endregion#region 构造函数public Log3ChartViewModel(){upFunctionSeries.Title = "Gain";downFunctionSeries.Title = "Phase";}#endregion#region 属性[ObservableProperty]public PlotModel _MyPlotModelUp;[ObservableProperty]public PlotModel _MyPlotModelDown;[ObservableProperty]public double _A = 0.5;[ObservableProperty]public double _B = 1;[ObservableProperty]public double _C = 1;[ObservableProperty]public int _X_max = 50;[ObservableProperty]public int _Factor = 10000;[ObservableProperty]public double _Y1_max = 0;[ObservableProperty]public double _Y1_min = -100;[ObservableProperty]public double _Y2_max = 100;[ObservableProperty]public double _Y2_min = -100;#endregion#region 方法public PlotModel PlotModelInit(string xtitle, string ytitle, double ymin, double ymax){var plotModel = new PlotModel();//plotModel.Title = "Log Paper";var logarithmicAxis1 = new LogarithmicAxis();logarithmicAxis1.MajorGridlineColor = OxyColor.FromArgb(40, 0, 0, 139);logarithmicAxis1.MajorGridlineStyle = LineStyle.Solid;logarithmicAxis1.Maximum = X_max;logarithmicAxis1.Minimum = 1 / (double)Factor;logarithmicAxis1.MinorGridlineColor = OxyColor.FromArgb(20, 0, 0, 139);logarithmicAxis1.MinorGridlineStyle = LineStyle.Solid;logarithmicAxis1.Position = AxisPosition.Bottom;if (!string.IsNullOrEmpty(xtitle)) logarithmicAxis1.Title = xtitle;plotModel.Axes.Add(logarithmicAxis1);var linearAxis1 = new LinearAxis();linearAxis1.MajorGridlineStyle = LineStyle.Solid;linearAxis1.MinorGridlineStyle = LineStyle.Dot;linearAxis1.Maximum = ymax;linearAxis1.Minimum = ymin;linearAxis1.Title = ytitle;plotModel.Axes.Add(linearAxis1);//var logarithmicAxis2 = new LogarithmicAxis();//logarithmicAxis2.MajorGridlineColor = OxyColor.FromArgb(40, 0, 0, 139);//logarithmicAxis2.MajorGridlineStyle = LineStyle.Solid;//logarithmicAxis2.Maximum = 180;//logarithmicAxis2.Minimum = -180;//logarithmicAxis2.MinorGridlineColor = OxyColor.FromArgb(20, 0, 0, 139);//logarithmicAxis2.MinorGridlineStyle = LineStyle.Solid;//logarithmicAxis2.Title = "Y";//plotModel.Axes.Add(logarithmicAxis2);return plotModel;}[RelayCommand]private void sure(){if (upFunctionSeries.Points.Count > 0) upFunctionSeries.Points.Clear();if (downFunctionSeries.Points.Count > 0) downFunctionSeries.Points.Clear();if (MyPlotModelUp != null){if (MyPlotModelUp.Series.Count > 0) MyPlotModelUp.Series.Clear();}if (MyPlotModelDown != null){if (MyPlotModelDown.Series.Count > 0) MyPlotModelDown.Series.Clear();}MyPlotModelUp = PlotModelInit("", "Magnitude[dB]", Y1_min, Y1_max);MyPlotModelDown = PlotModelInit("Frequency[Hz]", "Phase[deg]", Y2_min, Y2_max);Gain = new double[X_max * Factor];Phase = new double[X_max * Factor];double previousPhase = 0;for (int i = 0; i < X_max * Factor; i++){double w = 2 * Math.PI * (i / (double)Factor);double temp_a = 1 - A*B * Math.Pow(w, 2);double temp_b = (A+B)*w;double temp_2 = Math.Pow(temp_a, 2) + Math.Pow(temp_b, 2);double temp_sqrt = C / Math.Sqrt(temp_2);double temp = Math.Abs(temp_sqrt);Gain[i] = 20 * Math.Log10(temp);double currentPhaseA = Math.Atan(A * w) / Math.PI * 180;double currentPhaseB = Math.Atan(B * w) / Math.PI * 180;Phase[i] = 0-(currentPhaseA + currentPhaseB);upFunctionSeries.Points.Add(new DataPoint(i / (double)Factor, Gain[i]));downFunctionSeries.Points.Add(new DataPoint(i / (double)Factor, Phase[i]));}MyPlotModelUp.Series.Add(upFunctionSeries);MyPlotModelDown.Series.Add(downFunctionSeries);MyPlotModelUp.ResetAllAxes();MyPlotModelUp.InvalidatePlot(true);MyPlotModelDown.ResetAllAxes();MyPlotModelDown.InvalidatePlot(true);}#endregion}
}

5、稳定裕度

在这里插入图片描述

5.1 幅值裕度

在这里插入图片描述

5.2 相角裕度

在这里插入图片描述

参考

【1】第五章 线性系统的频域分析法:
https://buckyi.github.io/Note-Automation/%E7%BB%8F%E5%85%B8%E6%8E%A7%E5%88%B6%E7%90%86%E8%AE%BA/%E7%AC%AC05%E7%AB%A0%20%E7%BA%BF%E6%80%A7%E7%B3%BB%E7%BB%9F%E7%9A%84%E9%A2%91%E5%9F%9F%E5%88%86%E6%9E%90%E6%B3%95.html#33
【2】【自动控制原理】第5章 幅相频率特性曲线(奈氏图)及其绘制:
https://blog.csdn.net/persona5joker/article/details/140055111
【3】相角裕度与幅值裕度:
https://blog.csdn.net/qq_38972634/article/details/119787996
【4】【自动控制原理】第五章 奈奎斯特稳定判据,相角裕度和幅值裕度,对数频率特性及其绘制:
https://blog.csdn.net/persona5joker/article/details/140059710?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-4-140059710-blog-119787996.235v43pc_blog_bottom_relevance_base8&spm=1001.2101.3001.4242.3&utm_relevant_index=7
【5】自控理论 第6章 II 相对稳定性、伯德图和闭环频率响应
https://www.cnblogs.com/harold-lu/p/15740368.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/877947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2000-2023年上市公司财务困境RLPM模型数据(含原始数据+计算结果)

2000-2023年上市公司财务困境RLPM模型数据&#xff08;含原始数据计算结果&#xff09; 1、时间&#xff1a;2000-2023年 2、来源&#xff1a;上市公司年报 3、指标&#xff1a;证券代码、证券简称、统计截止日期、是否剔除ST或*ST或PT股、是否剔除上市不满一年、已经退市或…

【binder】【android12】【2.servicemanager启动——全源码分析】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录 …

入门Java编程的知识点—>面向对象(day07)

重点掌握什么是面向对象&#xff1f;重点掌握面向对象封装的意义&#xff1f;重点掌握类的封装,创建对象,访问对象&#xff1f; 面向对象 OO&#xff1a;&#xff08;Object Oriented&#xff09;面向对象 面向对象是一种编程思想,遵循面向对象设计原则可以写出高质量代码, …

sheng的学习笔记-AI-生成式方法

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 需要额外的知识对应连接&#xff1a; EM&#xff1a;sheng的学习笔记-AI-EM算法-CSDN博客 贝叶斯&#xff1a; sheng的学习笔记-AI-贝叶斯&#xff08;Bayesian&#xff09;分类-CSDN博客 高斯混合模型&#xff1a;shen…

C#中的WebClient与XPath:实现精准高效的Screen Scraping

在现代互联网中&#xff0c;Screen Scraping&#xff08;屏幕抓取&#xff09;已成为从网页中提取信息的重要技术。对于C#开发者来说&#xff0c;WebClient和XPath是实现高效抓取的重要工具。本文将概述如何使用C#中的WebClient类结合XPath技术&#xff0c;实现精准高效的Scree…

流媒体服务器如何让WebRTC支持H.265,同时又能支持Web js硬解码、软解码(MSE硬解、WASM软解)

为了这一整套的解决方案&#xff0c;调研研发整整花费了差不多半年多的时间&#xff0c;需达成的目标&#xff1a; 流媒体服务器端不需要将H.265转码成H.264&#xff0c;就能让Chrome解码播放H.265&#xff1b; 注意&#xff1a;现在很多市面上的软硬件通过转码H.265成H.264的…

融合创新趋势:Web3时代的跨界融合

随着互联网技术的飞速发展&#xff0c;Web3时代的到来正引领着一场深刻的技术与社会变革。Web3&#xff0c;作为下一代互联网技术的代表&#xff0c;不仅仅是一种技术创新&#xff0c;更是一种跨界融合的趋势。通过去中心化、智能合约和区块链技术的应用&#xff0c;Web3正在重…

django学习入门系列番外篇《request》

文章目录 1 Response功能介绍2 HttpResponse2.1 HttpResponse对象介绍content_typeContent-Type是什么&#xff1f;Content-Type的格式 Content-DispositionContent-Disposition的作用Content-Disposition的使用语句 例子 2.2 HttpResponse常用用法 3 JsonResponse3.1 JsonResp…

2054. 骑马修栅栏

代码 #include<bits/stdc.h> using namespace std; int mp[505][505]; queue<int> ans; int du[505]; int n0,m,u,v;void dfs(int i) {for(int j1;j<n;j){if(mp[i][j]>1){mp[i][j]--;mp[j][i]--;dfs(j);}}ans.push(i); } int main() {cin>>m;for(int …

WordPress简约响应式个人博客Kratos主题

Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c;主题设计简约友好&#xff0c;并且支持响应式&#xff0c;自适应访问&#xff0c;简seo单大方的主页构造&#xff0c;使得博客能在臃肿…

8.20T3 无损加密(线性代数转LGV+状压dp+高维前缀和)

http://cplusoj.com/d/senior/p/NODSX2301C 对于式子&#xff1a; 这个神秘的线性代数形式比较难处理&#xff0c;但我们可以考虑其组合意义。行列式现存的可用组合意义之一就是LGV&#xff08;矩阵式不太可用&#xff09; 先把原先的矩阵转化为一个有向图。现在我们要构造一…

ArcGIS如何将投影坐标系转回为地理坐标系

有时候两个数据&#xff0c;一个为投影坐标系&#xff0c;另一个为地理坐标系时&#xff0c;在GIS软件中位置无法叠加到一起&#xff0c;这需要将两个或多个数据的坐标系统一&#xff0c;可以直接将地理坐标系的数据进行投影&#xff0c;或将投影坐标系转为地理坐标系。下面介绍…

自养号测评技术:如何挑选适合的IP环境方案

市面上的IP服务及常见问题 当前市场上常见的IP服务包括911、Luminati、Google Fi、TM流量卡、Socks专线等。这些服务在为用户提供网络代理或VPN服务时&#xff0c;常会遇到以下主要问题&#xff1a; 1. 高负载与重复率高&#xff1a;由于使用人数众多&#xff0c;导致网络拥堵…

移动端爬虫学习记录

免责声明 本文旨在探讨移动端爬虫技术的应用和挑战&#xff0c;仅供教育和研究用途。请确保在合法合规的框架内使用爬虫技术&#xff0c;遵循相关法律法规和网站的使用条款。作者不对因使用本文内容而产生的任何法律或安全问题承担责任。 1、初识移动端爬虫 学习移动端爬虫的原…

docker映射了端口,宿主机不生效

1、问题产生原因 docker run -d --name my-redis -p 6379:6379 -v /usr/redis.conf:/usr/local/etc/redis/redis.conf team-redis:3.2 redis-server /usr/local/etc/redis/redis.conf 这容器跑起来了&#xff0c;端口6379没用。搞的我一直怀疑哪里出错了&#xff0c;查看配置…

Kakfa的核心概念-Replica副本(kafka创建topic并指定分区和副本的两种方式)

Kakfa的核心概念-Replica副本&#xff08;kafka创建topic并指定分区和副本的两种方式&#xff09; 1、kafka命令行脚本创建topic并指定分区和副本2、springboot集成kafka创建topic并指定分区和副本2.1、springboot集成kafka2.1.1、springboot集成kafka创建topic并指定5个分区和…

VScode 连接远程服务器

1、 2、 3、免密登录 1、本地生成密钥 ssh-keygen2、生成的密钥默认在 C:\Users\***\.ssh\ 中3、将私钥 C:\Users\***\.ssh\id_rsa 添加到上面的配置文件中的 IdentityFile 项内4、将公钥 C:\Users\***\.ssh\id_rsa\id_rsa.pub 拷贝到远程 ~/.ssh/authorized_keys 中 4、远程…

【精选】基于django柚子校园影院(咨询+解答+辅导)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Golang | Leetcode Golang题解之第371题两整数之和

题目&#xff1a; 题解&#xff1a; func getSum(a, b int) int {for b ! 0 {carry : uint(a&b) << 1a ^ bb int(carry)}return a }

「Python数据分析」Pandas进阶,利用concat()函数连接数据(一)

在我们迈向中高级出局数据分析的过程中&#xff0c;数据的合并和连接&#xff0c;是一个非常重要的技能。 现实中&#xff0c;分散在各种数据库&#xff0c;各种数据表格&#xff0c;各种数据存储设备当中的&#xff0c;各式各样的数据&#xff0c;是我们进行数据分析的基础&a…