《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 63|回复: 2
收起左侧

[提问] 用getdata函数读取数据的时候数据读取不过来

[复制链接]

签到天数: 51 天

[LV.5]常住居民I

发表于 2017-8-11 08:56:37 | 显示全部楼层 |阅读模式
我是照着书上的例子练习的,结果发生了数据传递不过来的情况,具体函数代码如下:
%getdata函数,这个函数的意思就是想把excel中的数据读出来,但最终的结果却没有成功传递,label更是为0
function [ data,label ] = getdata( xlsfile )
[~,label]=xlsread(xlsfile,1,'B2:B261');
[height,~]=xlsread(xlsfile,'C2:C261');
[weight,~]=xlsread(xlsfile,'D2:D261');
data=[height,weight];
l=zeros(size(label));
for i=1:length(l)
    if label{i}=='男'
        l(i)=1;
    end
end
label=l;

%divide函数
function [ traind,trainl,testd,testl ] = divide( data,label )
%UNTITLED2 此处显示有关此函数的摘要
%   此处显示详细说明
%随机数
rng(0)

%男女各取30个进行训练
TRAIN_NUM_M=30;   %TRAIN_NUM_M:男生取出的训练人数
TRAIN_NUM_F=30;   %TRAIN_NUM_M:女生取出的训练人数

%男女分开
m_data=data(label==1,:);   %将男生数据提取出来
f_data=data(label==0,:);   %将女生数据提取出来
NUM_M=length(m_data);      %男生的个数

%男
r=randperm(NUM_M);         %生成NUM_M个随机数,大小为1-NUM_M,即将1-NUM_M进行随机排列
traind(1:TRAIN_NUM_M,:)=m_data(r(1:TRAIN_NUM_M),:);    %将男生数据中1-TRAIN_NUM_M行的数据传递给traind,即男生训练数据保存在traind中
testd(1:NUM_M-TRAIN_NUM_M,:)=m_data(r(TRAIN_NUM_M+1:NUM_M),:);   %将男生数据中TRAIN_NUM_M+1-TNUM_M的数据传递给testd,即男生测试数据保存在testd中
NUM_F=(f_data);            %女生的个数

%女
r=randperm(NUM_F);         %生成NUM_F个随机数,大小为1-NUM_F,即将1-NUM_F进行随机排列
traind(TRAIN_NUM_M+1:TRAIN_NUM_M+TRAIN_NUM_F,:)=f_data(r(1:TRAIN_NUM_F),:);    %将女生数据中1-TRAIN_NUM_F的数据传递给traind,即女生训练数据保存在traind中
testd(NUM_M-TRAIN_NUM_M+1:NUM_M-TRAIN_NUM_M+NUM_F-TRAIN_NUM_F,:)=f_data(r(TRAIN_NUM_F+1:NUM_F),:);   %将女生数据中TRAIN_NUM_M+1-TNUM_M的数据传递给testd,即女生测试数据保存在testd中

%赋值,将训练和测试数据中的男女生进行标签分配,男生为1,女生为0
trainl=zeros(1,TRAIN_NUM_M+TRAIN_NUM_F);   
trainl(1:TRAIN_NUM_M)=1;
test1=zeros(1,NUM_M-TRAIN_NUM_M+NUM_F-TRAIN_NUM_F);
test1(1:NUM_M-TRAIN_NUM_M)=1;
end

%主函数
>> xlsfile='student.xls';
>> [data,label] = getdata('student.xls');
>> [ traind,trainl,testd,testl ] = divide( data,label );

签到天数: 597 天

[LV.9]以坛为家II

发表于 2017-8-11 12:30:16 | 显示全部楼层
肯定程序出了问题,调试一下就知道了
回复 支持 反对

使用道具 举报

签到天数: 51 天

[LV.5]常住居民I

 楼主| 发表于 2017-8-13 19:14:28 | 显示全部楼层
解决了,需要将不同的.m文件都放入一个文件夹中,否则会出错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 陕ICP备08102094号  

GMT+8, 2017-12-12 22:03 , Processed in 0.084409 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表