首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB中使用XLS读取和一个forloop

在MATLAB中使用XLS读取和一个forloop
EN

Stack Overflow用户
提问于 2019-04-16 16:47:10
回答 1查看 56关注 0票数 0

我正在尝试将一些数据从MATLAB保存到excel中。

这是非常重复的,我希望使用for循环来显著减少我使用的代码行数。

举个例子:

代码语言:javascript
复制
APPLES = rand(1,10);
PEARS = rand(1,10);
Horizon = (1:10);
% Writing to excel 
xlswrite('Results.xlsx',APPLES,'Apple','B2')
xlswrite('Results.xlsx',Horizon,'Apple','B1')

%Pears
xlswrite('Results.xlsx',PEARS,'Pear','B2')
xlswrite('Results.xlsx',Horizon,'Pear','B1')

上面的代码将创建一个名为Results的excel工作表,其中包含Apple和Pear两个工作表,其中包含我需要的数据。

有没有可能创建一个for循环来减少代码的数量,因为我实际上使用了200个水果,所以它开始占用大量的空间和时间来手工编写它们?

我已经尝试过手工操作,这很耗时,我也尝试过这种方法,但不起作用:

代码语言:javascript
复制
%test

Apples = rand(1,10);
Pears = rand(1,10);
Horizon = (1:10);

names1 = {'Apples' 'Pears'};
%%
for ii = 1:length(names1)
% Writing to excel 
xlswrite('Results22.xlsx',fprintf(names1{ii}),names1{ii},'B2')
xlswrite('Results22.xlsx',Horizon,names1{ii},'B1')
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-16 18:49:20

问题是,在循环中,您调用的是表示变量名称的字符串,而不是变量本身。

例如,fprintf(names1{ii})给出的字符串是'Apples',而不是包含这些值的变量Apples

为了解决这个问题,并且为了在工作空间中保留200个水果的良好实践,您可以将这些水果定义为struct字段。然后,您可以使用dynamic field name访问它

代码语言:javascript
复制
fruit_names = {'Apples', 'Pears'};
Horizon = (1:10);

for k=1:length(fruit_names)
   fruit.(fruit_names{k}) = rand(1,10);
   xlswrite('Results22.xlsx',fruit.(fruit_names{k}),fruit_names{k},'B2')
   xlswrite('Results22.xlsx',Horizon,fruit_names{k},'B1')
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55704074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档