我有一对数据向量public class ReasonsViewModel : ViewModel
{
private IEnumerable<string> m_Names;
public IEnumerable<string> Names
{
get { return m_Names; }
set
{
if (m_Names != value)
{
m_Names = value;
OnPropertyChanged(() => Names);
}
}
}
private string m_SelectedName;
public string SelectedName
{
get { return m_SelectedName; }
set
{
if (m_SelectedName != value)
{
m_SelectedName = value;
OnPropertyChanged(() => SelectedName);
}
}
}
public DelegateCommand SelectCommand { get; private set; }
public ReasonsViewModel()
{
SelectCommand = new DelegateCommand(p => SelectCommandExecute(p));
}
private bool m_Processing;
private void SelectCommandExecute(object item)
{
if (m_Processing) return;
try
{
m_Processing = true;
var name = item as string;
if (name == null) return;
SelectedName = name;
}
finally
{
m_Processing = false;
}
}
}
和x
,定义如下:
y
它们与等式相关
data = [
0 0;
0.05 1.108646244630E-01;
0.10 2.217423074817E-01;
0.15 3.325947375398E-01;
0.20 4.434863433851E-01;
0.25 5.543595496420E-01;
0.30 6.652338361973E-01;
0.35 7.761094191116E-01;
0.40 8.869865144820E-01;
0.45 9.978653384221E-01;
0.50 1.108746107036E+00];
x = data(:,1);
y = data(:,2);
其中y = (cos(k*L)^2-(0.8194*k*cos(k*L)*sin(k*L))*x;
是固定数字。
现在我想找到k=3
的正确值,上面的等式适合我的数据。
虽然数据看起来是线性的,但我想找到L
的正确值,其数据符合此传递函数的正弦曲线的初始线性部分。
我该如何解决这类问题?
答案 0 :(得分:1)
首先定义appErrorChannel
和x
,然后调用y
:
您将看到以下屏幕,您需要在其中选择&#34; X数据&#34;和你的&#34; Y数据&#34;:
选择之前创建的cftool
和x
向量后,将显示默认的线性拟合:
(正如您已经看到的,这实际上非常适合y
和x
之间的关系
要使y
符合您所需的型号,请点击下面的#34; Polynomial&#34;并选择选项&#34;自定义方程&#34;,然后编写您的模型。如果选中自动适合复选框(默认情况下),您将立即获得合适:
正如您所看到的,我们得到了cftool
,但我们也看到拟合并没有真正通过这些点,这意味着至少有以下一种陈述是正确的:
L = 0.7157
的自定义等式)不正确。L
超出预期范围等。)。您可以找到问题的根源(可能是模型中的错误括号)并修复它。