MATLAB提示输出参数过多,如何解决?。
23 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
vsscpbxt
el 21 de Mayo de 2023
Respondida: ybumrvk
el 21 de Mayo de 2023
close all
clear all
fidin=fopen('20131118B.txt'); %打开文件one minute
fidout=fopen('data.txt','w'); %创建文件,用于写进数据
while ~feof(fidin) %判断是否为文件末尾
tline=fgetl(fidin); %从文件中读取行
if double(tline(1))>=48&&double(tline(1))<=57 %判断首字符是否是数值
fprintf(fidout,'%s\n\n',tline); %如果是数字行,把此行数据写入文件data中
continue %如果是非数字继续下一次循环
end
end
fclose(fidout);
M=importdata('data.txt'); %将生成的data.txt文件导入到工作空间。
% M=importdata('one minute.txt');
%%%%%%%%%%%%%%%%%%数据处理%%%%%%%%%%%%%%%%%%%
b={'日期','时间','开盘价','最高价','最低价','收盘价','平均价','成交量','持仓量','STD30','STD60','SLOPE30','SLOPE60','DIF','DEA'};
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',b,'Sheet1','A1');
t=M.textdata(:,:);
p=M.data(:,4); %取倒数第4列数据,即第6列数据。
DD=[t num2cell(M.data)];
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',DD,'Sheet1','A2');
subplot(4,1,1)
plot(p) %画出这行数据
xlabel('原始图形')
lgstr=cell(1,1);
%%%%%%%%%%%%%%%%%%%%%求出N=12周期的EMA12%%%%%%%%%%%%%%%%%%%
N=12;
a=2/(N+1);
%%%%%%%%%%%%求EMA0,以用递推公式求出其他EMA1 EMA2....等%%%%%%%%%%%%%%%%
son0=p(1);
mum0=1;
for i=2:N
son0=son0+((1-a)^(i-1))*p(i); %求出EMA0的分子
mum0=mum0+((1-a)^(i-1)); %求出EMA0的分母
end
EMA0=son0/mum0; %求出EMA0
EMA1=EMA0;
%%%%%%%%%%%%求EMA123..........到数据尾部%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=N+1:length(p) %以上已经计算第一个数据EMA0,因此从第N+1周期开始计算EMA作为有效数据的第二点,前面自动补充为0.加上第一个EMA0,总共有效长度为length(p)-N+1.
EMA0=EMA0+a*(p(j)-EMA0); %EMA(t1)=EMA(t0)+a(p-EMA(t0))以计算EMA(t1)。
EMA(j)=EMA0;
EMA1=[EMA1,EMA(j)];
end
x0=EMA1(1)*ones(1,N-1);
EMA12=[x0,EMA1];
clear N EMA0 EMA1 a suno mumo
%%%%%%%%%%%%%%%%%%%%%求出N=26周期的EMA26,复制以上程序即可%%%%%%%%%%%%%%%%%%%%%%%%%%
N=26;
a=2/(N+1);
%%%%%%%%%%%%求EMA0,以用递推公式求出其他EMA1 EMA2....等%%%%%%%%%%%%%%%%
son0=p(1);
mum0=1;
for i=2:N
son0=son0+((1-a)^(i-1))*p(i); %求出EMA0的分子
mum0=mum0+((1-a)^(i-1)); %求出EMA0的分母
end
EMA0=son0/mum0; %求出EMA0
EMA1=EMA0;
%%%%%%%%%%%%求EMA123..........到数据尾部%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=N+1:length(p) %以上已经计算第一个数据EMA0,因此从第N+1周期开始计算EMA作为有效数据的第二点,前面自动补充为0.加上第一个EMA0,总共有效长度为length(p)-N+1.
EMA0=EMA0+a*(p(j)-EMA0); %EMA(t1)=EMA(t0)+a(p-EMA(t0))以计算EMA(t1)。
EMA(j)=EMA0;
EMA1=[EMA1,EMA(j)];
end
x0=EMA1(1)*ones(1,N-1);
EMA26=[x0,EMA1];
DIF=EMA12-EMA26;
subplot(4,1,4)
plot(DIF,'g')
clear N EMA0 EMA1 a suno mumo
%%%%%%%%%%%%%%%%%%%%%%%%%%求DIF的9点平均,即DEM%%%%%%%%%%%%%%
p=DIF;
N=9;
a=2/(N+1);
%%%%%%%%%%%%求EMA0,以用递推公式求出其他EMA1 EMA2....等%%%%%%%%%%%%%%%%
son0=p(1);
mum0=1;
for i=2:N
son0=son0+((1-a)^(i-1))*p(i); %求出EMA0的分子
mum0=mum0+((1-a)^(i-1)); %求出EMA0的分母
end
EMA0=son0/mum0; %求出EMA0
EMA1=EMA0;
%%%%%%%%%%%%求EMA123..........到数据尾部%%%%%%%%%%%%%%%%%%%%%%%%%%
for j=N+1:length(p) %以上已经计算第一个数据EMA0,因此从第N+1周期开始计算EMA作为有效数据的第二点,前面自动补充为0.加上第一个EMA0,总共有效长度为length(p)-N+1.
EMA0=EMA0+a*(p(j)-EMA0); %EMA(t1)=EMA(t0)+a(p-EMA(t0))以计算EMA(t1)。
EMA(j)=EMA0;
EMA1=[EMA1,EMA(j)];
end
x0=EMA1(1)*ones(1,N-1);
DEM=[x0,EMA1];
hold on
plot(DEM,'r')
xlabel('MACD')
%%%%%%%%%%%%%%%%%%%%%%%求OSC%%%%%%%%%%%%%%%%%%%%%%%%%
OSC=DIF-DEM;
hold on
bar(OSC,'k')
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',DIF','Sheet1','N2');
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',DEM','Sheet1','O2');
for i=1:length(DIF)
if DIF(i)<DEM(i)
ok=disp('ok');
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',ok','Sheet1',‘P2’);
end
end
for i=1:length(DIF)
if DIF(i)<DEM(i)
ok=disp('ok');
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',ok','Sheet1',‘P2’);
end
end
上面输出时提示输出参数太多,如何实现ok输出到对应的位置上,请各位 高手提点!谢谢
0 comentarios
Respuesta aceptada
ybumrvk
el 21 de Mayo de 2023
改成:
ok = 'ok';
xlswrite('C:\Users\Administrator\Desktop\2345.xlsx',ok',1,'P2');
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Deep Learning Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!