Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 我的多边形拟合的最终结果是NaN,但我删除了矩阵的NaN,并保留了相同的大小,你能帮我吗?_Matlab - Fatal编程技术网

Matlab 我的多边形拟合的最终结果是NaN,但我删除了矩阵的NaN,并保留了相同的大小,你能帮我吗?

Matlab 我的多边形拟合的最终结果是NaN,但我删除了矩阵的NaN,并保留了相同的大小,你能帮我吗?,matlab,Matlab,示例数据: 3.0000 4.8500 3.2700 4.8900 3.3100 4.9000 2.7500 4.8600 2.9400 5.0000 4.9200 0 4.8900 0 4.9000 0 4.9000 0 7.0000 4.9000 0 4.8600 0 4.9000 0

示例数据:

 3.0000    4.8500    3.2700    4.8900    3.3100    4.9000    2.7500    4.8600    2.9400
 5.0000    4.9200         0    4.8900         0    4.9000         0    4.9000         0
 7.0000    4.9000         0    4.8600         0    4.9000         0    4.9300         0
 8.0000         0    1.7800         0    2.6800         0    2.1300         0    2.8000
 9.0000         0    1.3800         0    1.6300         0    1.2200         0    1.8200
10.0000         0    0.9200         0    1.3100         0    0.9500         0    1.4200
11.0000         0    1.3200         0    1.3100         0    1.0100         0    1.7500
12.0000         0    1.7000         0    1.4200         0    1.1400         0    2.3900
13.0000         0    2.3400         0    2.3800         0    2.1400         0    4.4800
14.0000         0    4.2600         0    2.7400         0    2.8300         0    4.7300
15.0000         0         0         0         0         0    3.4600         0    5.0400

Columns 10 through 17

4.9900    3.0700    4.9200    3.0300    4.9600    3.7400    4.9600    3.4400
4.9000    3.5800    4.9800    3.9000    4.9500    3.0000         0    3.5800
4.9200         0    4.9500         0         0         0         0         0
     0    3.1300         0    3.9900         0    1.8300         0    3.3800
     0    2.4800         0    2.2000         0    1.2800         0    2.9900
     0    1.6100         0    1.8800         0    0.9200         0    2.7500
     0    2.2000         0    1.7000         0    1.0200         0    2.2100
     0    2.3800         0    1.6700         0    1.4600         0    2.7500
     0         0         0    1.9500         0    1.5800         0    2.9600
     0         0         0    3.0000         0    2.6700         0         0
     0         0         0    3.2800         0    4.3400         0         0
代码:

function [LacMin] = lac(dat)

Cal = 5.0; %Valor de Calibração;

StLido = dat(1:3,2:2:end); %Identificando Padroes;

StLido(StLido==0) = NaN; %Exluindo zeros;

Pmed = nanmean(StLido); %Padrão Médio;

pa = Pmed(1,1); %Selecionando padrão para cada indivíduo;

pb = Pmed(1,2);

pc = Pmed(1,3);

pd = Pmed(1,4);

pe = Pmed(1,5);

pf = Pmed(1,6);

pg = Pmed(1,7);

ph = Pmed(1,8);

% pi = Pmed(1,9);

% pj = Pmed(1,10);

% pk = Pmed(1,11);

% pl = Pmed(1,12);

% pm = Pmed(1,13);

% pn = Pmed(1,14);

% po = Pmed(1,15);

% pp = Pmed(1,16);

% pq = Pmed(1,17);

% pr = Pmed(1,18);

% ps = Pmed(1,19);

% pt = Pmed(1,20);

% pu = Pmed(1,21);

% pv = Pmed(1,22);

% px = Pmed(1,23);

% py = Pmed(1,24);

% pw = Pmed(1,25);

% pz = Pmed(1,26);

LacLido = dat(:,3:2:end);

aa = LacLido(:,1); %Selecionando Indivíduos e suas [LAC];

ab = LacLido(:,2);

ac = LacLido(:,3);

ad = LacLido(:,4);

ae = LacLido(:,5);

af = LacLido(:,6);

ag = LacLido(:,7);

ah = LacLido(:,8);

% ai = LacLido(:,9);

% aj = LacLido(:,10);

% ak = LacLido(:,11);

% al = LacLido(:,12);

% am = LacLido(:,13);

% an = LacLido(:,14);

% ao = LacLido(:,15);

% ap = LacLido(:,16);

% aq = LacLido(:,17);

% ar = LacLido(:,18);

% as = LacLido(:,19);

% at = LacLido(:,20);

% au = LacLido(:,21);

% av = LacLido(:,22);

% ax = LacLido(:,23);

% ay = LacLido(:,24);

% aw = LacLido(:,25);

% az = LacLido(:,26);

caa = (((aa.*Cal)./pa).*3); %Corrigindo [LAC] e depois agrupando os resultados;

cab = (((ab.*Cal)./pb).*3);

cac = (((ac.*Cal)./pc).*3);

cad = (((ad.*Cal)./pd).*3);

cae = (((ae.*Cal)./pe).*3);

caf = (((af.*Cal)./pf).*3);

cag = (((ag.*Cal)./pg).*3);

cah = (((ah.*Cal)./ph).*3);

% cai = (((ai.*Cal)./pi).*3);

% caj = (((aj.*Cal)./pj).*3);

% cak = (((ak.*Cal)./pk).*3);

% cal = (((al.*Cal)./pl).*3);

% cam = (((am.*Cal)./pm).*3);

% can = (((an.*Cal)./pn).*3);

% cao = (((ao.*Cal)./po).*3);

% cap = (((ap.*Cal)./pp).*3);

% caq = (((aq.*Cal)./pq).*3);

% car = (((ar.*Cal)./pr).*3);

% cas = (((as.*Cal)./ps).*3);

% cat = (((at.*Cal)./pt).*3);

% cau = (((au.*Cal)./pu).*3);

% cav = (((av.*Cal)./pv).*3);

% cax = (((ax.*Cal)./px).*3);

% cay = (((ay.*Cal)./py).*3);

% caw = (((aw.*Cal)./pw).*3);

% caz = (((az.*Cal)./pz).*3);

LacCor = [caa,cab,cac,cad,cae,caf,cag,cah];%cai,caj,cak,cal,cam,can,cao,cap,caq,car,cas,cat,cau,cav,cax,cay,caw,caz];

pka = max(LacCor(1:3,1)); %Identificando [LAC]pico;

pkb = max(LacCor(1:3,2));

pkc = max(LacCor(1:3,3));

pkd = max(LacCor(1:3,4));

pke = max(LacCor(1:3,5));

pkf = max(LacCor(1:3,6));

pkg = max(LacCor(1:3,7));

pkh = max(LacCor(1:3,8));

% pki = max(LacCor(1:3,9));

% pkj = max(LacCor(1:3,10));

% pkk = max(LacCor(1:3,11));

% pkl = max(LacCor(1:3,12));

% pkm = max(LacCor(1:3,13));

% pkn = max(LacCor(1:3,14));

% pko = max(LacCor(1:3,15));

% pkp = max(LacCor(1:3,16));

% pkq = max(LacCor(1:3,17));

% pkr = max(LacCor(1:3,18));

% pks = max(LacCor(1:3,19));

% pkt = max(LacCor(1:3,20));

% pku = max(LacCor(1:3,21));

% pkv = max(LacCor(1:3,22));

% pkx = max(LacCor(1:3,23));

% pky = max(LacCor(1:3,24));

% pkw = max(LacCor(1:3,25));

% pkz = max(LacCor(1:3,26));

ba = [pka;LacCor(4:end,1)]; %Agrupando [LAC]pico ás [LAC] do incremental;

bb = [pkb;LacCor(4:end,2)];

bc = [pkc;LacCor(4:end,3)];

bd = [pkd;LacCor(4:end,4)];

be = [pke;LacCor(4:end,5)];

bf = [pkf;LacCor(4:end,6)];

bg = [pkg;LacCor(4:end,7)];

bh = [pkh;LacCor(4:end,8)];

% bi = [pki;LacCor(4:end,9)];

% bj = [pkj;LacCor(4:end,10)];

% bk = [pkk;LacCor(4:end,11)];

% bl = [pkl;LacCor(4:end,12)];

% bm = [pkm;LacCor(4:end,13)];

% bn = [pkn;LacCor(4:end,14)];

% bo = [pko;LacCor(4:end,15)];

% bp = [pkp;LacCor(4:end,16)];

% bq = [pkq;LacCor(4:end,17)];

% br = [pkr;LacCor(4:end,18)];

% bs = [pks;LacCor(4:end,19)];

% bt = [pkt;LacCor(4:end,20)];

% bu = [pku;LacCor(4:end,21)];

% bv = [pkv;LacCor(4:end,22)];

% bx = [pkx;LacCor(4:end,23)];

% by = [pky;LacCor(4:end,24)];

% bw = [pkw;LacCor(4:end,25)];

% bz = [pkz;aLacCor(4:end,26)];

b = [ba,bb,bc,bd,be,bf,bg,bh]; %%%%bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bx,by,bw,bz];

Intensidade = dat(3:end,1);

[nl,nc]=size(b);

Intensidade = (Intensidade(1:nl)); %Normalizando a Intensidade;

mpr = [Intensidade,b];

mpr(mpr==0)= NaN; %Identificando zeros e colocando NaN;

v = ~any(isnan(mpr)); %Identificando e excluindo os NaN do polinomio;

da = polyfit(mpr(v,1), mpr(v,2), 2); %Polinomio;

db = polyfit(mpr(v,1), mpr(v,3), 2);

dc = polyfit(mpr(v,1), mpr(v,4), 2);

dd = polyfit(mpr(v,1), mpr(v,5), 2);

de = polyfit(mpr(v,1), mpr(v,6), 2);

df = polyfit(mpr(v,1), mpr(v,7), 2);

dg = polyfit(mpr(v,1), mpr(v,8), 2);

dh = polyfit(mpr(v,1), mpr(v,9), 2);

% di = polyfit(mpr(v,1), mpr(v,10), 2);

% dj = polyfit(mpr(v,1), mpr(v,11), 2);

% dk = polyfit(mpr(v,1), mpr(v,12), 2);

% dl = polyfit(mpr(v,1), mpr(v,13), 2);

% dm = polyfit(mpr(v,1), mpr(v,14), 2);

% dn = polyfit(mpr(v,1), mpr(v,15), 2);

% do = polyfit(mpr(v,1), mpr(v,16), 2);

% dp = polyfit(mpr(v,1), mpr(v,17), 2);

% dq = polyfit(mpr(v,1), mpr(v,18), 2);

% dr = polyfit(mpr(v,1), mpr(v,19), 2);

% ds = polyfit(mpr(v,1), mpr(v,20), 2);

% dt = polyfit(mpr(v,1), mpr(v,21), 2);

% du = polyfit(mpr(v,1), mpr(v,22), 2);

% dv = polyfit(mpr(v,1), mpr(v,23), 2);

% dx = polyfit(mpr(v,1), mpr(v,24), 2);

% dy = polyfit(mpr(v,1), mpr(v,25), 2);

% dw = polyfit(mpr(v,1), mpr(v,26), 2);

% dz = polyfit(mpr(v,1), mpr(v,27), 2);

abc = [da;db;dc;dd;de;df;dg;dh]; %;di;dj;dk;dl;dm;dn;do;dp;dq;dr;ds;dt;du;dv;dx;dy;dw;dz];

LacMinA = (abc(1,2)./(2*abc(1,1)));% Determinando LacMin Atleta (A);

LacMinB = (abc(2,2)./(2*abc(2,1)));

LacMinC = (abc(3,2)./(2*abc(3,1)));

LacMinD = (abc(4,2)./(2*abc(4,1)));

LacMinE = (abc(5,2)./(2*abc(5,1)));

LacMinF = (abc(6,2)./(2*abc(6,1)));

LacMinG = (abc(7,2)./(2*abc(7,1)));

LacMinH = (abc(8,2)./(2*abc(8,1)));

%LacMinI = (abc(9,2)./(2*abc(9,1)));

%LacMinJ = (abc(10,2)./(2*abc(10,1)));

%LacMinK = (abc(11,2)./(2*abc(11,1)));

%LacMinL = (abc(12,2)./(2*abc(12,1)));

%LacMinM = (abc(13,2)./(2*abc(13,1)));

%LacMinN = (abc(14,2)./(2*abc(14,1)));

%LacMinO = (abc(15,2)./(2*abc(15,1)));

%LacMinP = (abc(16,2)./(2*abc(16,1)));

%LacMinQ = (abc(17,2)./(2*abc(17,1)));

%LacMinR = (abc(18,2)./(2*abc(18,1)));

%LacMinS = (abc(19,2)./(2*abc(19,1)));

%LacMinT = (abc(20,2)./(2*abc(20,1)));

%LacMinU = (abc(21,2)./(2*abc(21,1)));

%LacMinV = (abc(22,2)./(2*abc(22,1)));

%LacMinX = (abc(23,2)./(2*abc(23,1)));

%LacMinY = (abc(24,2)./(2*abc(24,1)));

%LacMinW = (abc(25,2)./(2*abc(25,1)));

%LacMinZ = (abc(26,2)./(2*abc(26,1)));


LacMin = [LacMinA,LacMinB,LacMinC,LacMinD,LacMinE,LacMinF,LacMinG,LacMinH]; %,LacMinI,LacMinJ,LacMinK,LacMinL,LacMinM,LacMinN,LacMinO,LacMinP,LacMinQ,LacMinR,LacMinS,LacMinT,LacMinU,LacMinV,LacMinX,LacMinY,LacMinW,LacMinZ];

[LacMin] = LacMin./-1

end

这一特殊问题在于:

v = ~any(isnan(mpr)); %Identificando e excluindo os NaN do polinomio;
da = polyfit(mpr(v,1), mpr(v,2), 2); %Polinomio;
...
您正在查找不带NaN的
mpr
列,但随后使用该掩码对行进行索引-您没有得到错误的唯一原因是,此时
mpr
恰好是一个方阵。如果您选中,您将看到
any
将维度作为其第二个参数-这很重要


顺便说一句,因为我正在运行您的代码来检查它,所以我冒昧地对它进行了矢量化。这不是更容易处理吗?非平凡位是使用
repmat
来处理从向量/标量到矩阵/向量的
Pmed
除法,并且循环因为
polyfit
是不可向量化的

function [LacMin] = lac2(dat)
Cal = 5.0; %Valor de Calibração;
StLido = dat(1:3,2:2:end); %Identificando Padroes;
StLido(StLido==0) = NaN; %Exluindo zeros;
Pmed = repmat(nanmean(StLido), size(dat,1), 1); %Padrão Médio;
LacLido = dat(:,3:2:end);
LacCor = (((LacLido.*Cal)./Pmed).*3); %Corrigindo [LAC] e depois agrupando os resultados;
pka = max(LacCor(1:3,:)); %Identificando [LAC]pico;
b = [pka;LacCor(4:end,:)]; %Agrupando [LAC]pico ás [LAC] do incremental;
Intensidade = dat(3:end,1);
[nl,nc]=size(b);
Intensidade = (Intensidade(1:nl)); %Normalizando a Intensidade;
mpr = [Intensidade,b];
mpr(mpr==0)= NaN; %Identificando zeros e colocando NaN;
v = ~any(isnan(mpr), 2); %Identificando e excluindo os NaN do polinomio;
abc = zeros(nc, 3);
for ii=1:nc
  abc(ii,:) = polyfit(mpr(v,1), mpr(v,ii+1), 2); %Polinomio;
end
LacMin = -(abc(:,2)./(2*abc(:,1)))';% Determinando LacMin Atleta (A);
end

我不能保证这是完美的,因为我几乎没有努力去理解这段代码的实际功能,但它基本上只是一个简单的语法转换,并为给定的输入生成与原始代码相同的结果。我建议您看看矢量化在编写代码方面的不同之处——一旦您开始充分利用它所能做的一切,Matlab将变得更加有趣。

欢迎使用矢量化。请务必包括您期望看到的内容、您看到的内容以及您已经尝试过的内容。此外,我怀疑是否有人愿意阅读那么多代码,因此为了您自己的利益,请将问题中的代码限制在绝对必要的范围内,可能总共不超过三到四个命令。耶,太好了!非常感谢!最好不是这样,我需要帮助。当我使用你们的代码时,有并没有什么方法来绘制这些值?每种情况下的单点图?