从Matlab出口到Excel

10次​​观看(最近30天)
您好,我有一个运行所有文本填充的脚本,其中包含一个信号,并在一个文件夹中计算所有人的幅度。
我希望将这些振幅保存在Excel中,但是当我尝试使用时,只会保存最后一个信号的幅度,例如图像中,而不是所有信号的所有振幅。
希望您能帮助我,非常感谢!
%%
糊='/users/sofiasantos/桌面/锡纳伊斯';%目录
data = dir(fullfile(粘贴,'*。文本');
为了k = 1:numel(数据)
信号=数据(k)。名称
data_org = importdata(信号,'\ t',7);%文本文件带有7个columms
eda = data_org.data;
EDA = EDA(:,6);%我只想要文本文件的6个胶结
Edaus =((EDA/2^10)*3)/0.12;%转换为我们
n =长度(Edaus);
FS = 1000;
t = n/fs;
t =(0:n-1)/fs;%时间
f =(0:n-1)/t;
%%
[b,a] =黄油(6,0.0035,'低的');
edaus_filter = filtfilt(b,a,edaus);%过滤信号EDA
minimo = min(edaus_filter);
maximo = max(edaus_filter);
AMP = ABS(Maximo-Minimo);
disp('振幅=');disp(amp);%振幅da scr
%%出口到Excel
t =表(amp,'Rownames',{信号});
文件名='Signals_eda.xlsx';
写入(t,filename);
结尾

接受的答案

Guillaume
Guillaume 2020年5月6日
确实,您将仅以Excel文件中的最后一个文件的数据结束,因为每个文件,您都会覆盖上一个文本文件中的Excel文件中写的内容。
最好的解决方案是存储 放大器 您在一个数组中计算一次,该数组一次填充一行。然后,一旦循环完成,将其转换为表格并将其全部保存在Excel文件中:
%您的前循环代码不变:
糊='/users/sofiasantos/桌面/锡纳伊斯';%目录
data = dir(fullfile(粘贴,'*。文本');
%创建数组以存储所有放大器:
amp_all = zeros(numel(data),1);
为了k = 1:numel(数据)
%..您的循环代码不变,除了最后3行,添加了
amp_all(k)= amp;
结尾
t =表(amp_all,'Rownames',{data.name},'variablenames',{'amp'});
撰写(t,'Signals_eda.xlsx',,,,'writerownames', 真的);如果您不将其写入Excel文件,则给行给名称的点不多
替代方法是在处理每个文件后写入Excel文件,然后必须告诉 可写的 每次在不同的行上写入,并确保它仅写第一个文件的标题:
%大多数代码不变
糊='/users/sofiasantos/桌面/锡纳伊斯';%目录
data = dir(fullfile(粘贴,'*。文本');
为了k = 1:numel(数据)
%...直到编写/创建表格:
t =表(amp,'Rownames',{信号});%请注意,信号在您的代码中未定义。你是说信号(没有s)
dowriteheader = k == 1;%仅编写第一个文件的标题
目的地= sprintf('广告',K+1);%行1是标题,因此数据进入k+1行。
撰写(t,'Signals_eda.xlsx',,,,'Write Variablenames',Dowriteheader,'writerownames', 真的,'范围', 目的地);
结尾
如您所见,它更加复杂,并且会更慢(MATLAB负载并在每次迭代中保存Excel文件)。此选项的唯一好处是,如果循环完成之前的代码错误,则您已经在Excel文件中编写的内容进行了处理。
1条评论
索非亚·桑托斯(Sofia Santos)
解决了我的问题:)
非常感谢您的帮助以及如此详细的解释!!

登录发表评论。

更多答案(0)

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!