使用一个循环填充数组

3视图(30天)
凯恩OConnor
凯恩OConnor 2021年5月21日
回答: Nagasai巴拉特 2021年5月24日
嗨我有新的matlab
我想知道你如何运行一个计算某些输入sd,获得输出Ea和E0、保存价值,然后再次运行实验用不同的x值,而无需运行实验无数次。我假设您使用for循环。
我想运行sd值0,0.01、0.02 ....0.1
这是下面的代码
%任务1
f = 10;% cos的频率(赫兹)
fs = 100;%采样频率(赫兹)
Ti = 1 / f;%样本(s)之间的时间
pheta =π/ 6;%的阶段
t = 0: Ti: 9.99;% 0到n - 1之间的时间间隔设置
B = cos(2 *π* f * t + pheta);%创建包含N信号样本向量y
y = B”;%的转置矩阵B
Ns = 1000;%的样本数量
= 2 f * * pi * Ti * (0: Ns-1)”;%创建一个数组
X = [cos (a) sin (a)];%建立一个矩阵
v = mldivide (X, y);%找到包含br和bi向量的元素
%的任务2 -噪音
sd = 0;%设置标准偏差
%与特定的sd模型噪声的影响值
Ndata1 = y + randn (1000 1) * sd;
Ndata2 = y + randn (1000 1) * sd;
Ndata3 = y + randn (1000 1) * sd;
Ndata4 = y + randn (1000 1) * sd;
Ndata5 = y + randn (1000 1) * sd;
Ndata6 = y + randn (1000 1) * sd;
%计算每个实验的v矩阵
v1 = mldivide (X, Ndata1);
v2 = mldivide (X, Ndata2);
v3 = mldivide (X, Ndata3);
v4 = mldivide (X, Ndata4);
v5 = mldivide (X, Ndata5);
v6 = mldivide (X, Ndata6);
%估计的值从每个六个实验数据
Aest1 =√v1 (1) * (1) + v1 (2) * (2))
Aest2 =√v2 (1) * v2 (1) + v2 (2) * v2 (2))
Aest3 =√v3 (1) * v3 v3 (1) + (2) * v3 (2))
Aest4 =√v4 (1) * v4 v4 (1) + (2) * v4 (2))
Aest5 =√v5(1) *版本5 v5 (1) + (2) * v5 (2))
Aest6 =√v6 (1) * v6版本6 (1)+ (2)* v6 (2))
% 6 expermients估计θ
phetatest1 =每股(v1 (2) / (1))
phetatest2 =每股(v2 (2) / v2 (1))
phetatest3 =每股(v3 (2) / v3 (1))
v4 phetatest4 =每股(v4 (2) / (1))
phetatest5 =每股(v5 (2) / v5 (1))
phetatest6 =每股(v6版本6 (2)/ (1))
%估计Ea值基于这些价值观
Ea =√(Aest1-1) * (Aest1-1) + (Aest2-1) * (Aest2-1) + (Aest3-1) * (Aest3-1) + (Aest4-1) * (Aest4-1) + (Aest5-1) * (Aest5-1) + (Aest6-1) * (Aest6-1)) * (1/6));
%估计Ea值基于这些价值观
E0 =√(phetatest1-pheta) * (phetatest1-pheta) + (phetatest2-pheta) * (phetatest2-pheta) + (phetatest3-pheta) * (phetatest3-pheta) + (phetatest4-pheta) * (phetatest4-pheta) + (phetatest5-pheta) * (phetatest5-pheta) + (phetatest6-pheta) * (phetatest6-pheta) * (1/6));

答案(1)

Nagasai巴拉特
Nagasai巴拉特 2021年5月24日
你好,
从我的理解你正试图运行上面的逻辑与不同的sd值和需要存储Ea, E0值数组中。的使用 功能 arrayfun 会帮助你完成你的任务。下面的代码片段将帮助你给的第一印象。
s = 0:0.01:0.1;
(Ea, E0) = arrayfun (@myFunction s);
函数myFunction (Ea, E0) = (sd)
%以上代码附在这里
%与特定的sd模型噪声的影响值
f = 10;% cos的频率(赫兹)
fs = 100;%采样频率(赫兹)
Ti = 1 / f;%样本(s)之间的时间
pheta =π/ 6;%的阶段
t = 0: Ti: 9.99;% 0到n - 1之间的时间间隔设置
B = cos(2 *π* f * t + pheta);%创建包含N信号样本向量y
y = B”;%的转置矩阵B
Ns = 1000;%的样本数量
= 2 f * * pi * Ti * (0: Ns-1)”;%创建一个数组
X = [cos (a) sin (a)];%建立一个矩阵
v = mldivide (X, y);%找到包含br和bi向量的元素
%的任务2 -噪音
Ndata1 = y + randn (1000 1) * sd;
Ndata2 = y + randn (1000 1) * sd;
Ndata3 = y + randn (1000 1) * sd;
Ndata4 = y + randn (1000 1) * sd;
Ndata5 = y + randn (1000 1) * sd;
Ndata6 = y + randn (1000 1) * sd;
%计算每个实验的v矩阵
v1 = mldivide (X, Ndata1);
v2 = mldivide (X, Ndata2);
v3 = mldivide (X, Ndata3);
v4 = mldivide (X, Ndata4);
v5 = mldivide (X, Ndata5);
v6 = mldivide (X, Ndata6);
%估计的值从每个六个实验数据
Aest1 =√v1 (1) * (1) + v1 (2) * (2));
Aest2 =√v2 (1) * v2 (1) + v2 (2) * v2 (2));
Aest3 =√v3 (1) * v3 v3 (1) + (2) * v3 (2));
Aest4 =√v4 (1) * v4 v4 (1) + (2) * v4 (2));
Aest5 =√v5(1) *版本5 v5 (1) + (2) * v5 (2));
Aest6 =√v6 (1) * v6版本6 (1)+ (2)* v6 (2));
% 6 expermients估计θ
phetatest1 =每股(v1 (2) / (1));
phetatest2 =每股(v2 (2) / v2 (1));
phetatest3 =每股(v3 (2) / v3 (1));
v4 phetatest4 =每股(v4 (2) / (1));
phetatest5 =每股(v5 (2) / v5 (1));
phetatest6 =每股(v6版本6 (2)/ (1));
%估计Ea值基于这些价值观
Ea =√(Aest1-1) * (Aest1-1) + (Aest2-1) * (Aest2-1) + (Aest3-1) * (Aest3-1) + (Aest4-1) * (Aest4-1) + (Aest5-1) * (Aest5-1) + (Aest6-1) * (Aest6-1)) * (1/6));
%估计Ea值基于这些价值观
E0 =√(phetatest1-pheta) * (phetatest1-pheta) + (phetatest2-pheta) * (phetatest2-pheta) + (phetatest3-pheta) * (phetatest3-pheta) + (phetatest4-pheta) * (phetatest4-pheta) + (phetatest5-pheta) * (phetatest5-pheta) + (phetatest6-pheta) * (phetatest6-pheta) * (1/6));
结束
进一步优化, 全球 变量可以用来代替宣布在每次调用。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!