matlab getdata函数,用getdata函数读取数据的时候数据读取不过来

2023-05-16

我是照着书上的例子练习的,结果发生了数据传递不过来的情况,具体函数代码如下:

%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 );

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab getdata函数,用getdata函数读取数据的时候数据读取不过来 的相关文章

随机推荐