cystal 发表于 2010-11-5 10:09

Attempt to reference field of non-structure array

本帖最后由 cystal 于 2010-11-5 10:11 编辑

一个matlab编辑的文件,新手需要将这个文件运行,希望大家能给与帮忙,非常感谢。
问题是:1,我把run_SMP页面里的datafile改为data.txt,discR改为2,直接运行run_SMP这个页 面报错,第22行fileclose时出错。
               2,使用run(run_SMP(data.txt,2))显示的就是上面的错误,non-structure array.我不清楚matlab输入数据的要求。
着急中,非常感谢大家的帮忙!

cystal 发表于 2010-11-5 10:35

请高手将该MATLAB代码转换为VC下可调试运行的

本帖最后由 cystal 于 2010-11-5 10:37 编辑

非常感谢,非常感谢

zhouyang664 发表于 2010-11-5 21:56

这个难道又是重复发帖?

cystal 发表于 2010-11-6 09:27

回复 1: cystal 的帖子

什么意思

cystal 发表于 2010-11-6 09:30

本帖最后由 cystal 于 2010-11-6 09:55 编辑

回复 2: zhouyang664 的帖子

不是重复,是真的要找大家帮我看看代码。这是别人写的,我只需要能让它运行。这个附件是数据,使用的时候将后缀.txt去掉这是为了方便上传加的。现在报错的是Missing MATLAB operator.还是在18行,谢谢高手帮忙啊

cystal 发表于 2010-11-6 09:35

回复 2: zhouyang664 的帖子

function run_SMP('disc_geneV20_data',0.2)
sup = 0.2;
eps = 0;
filter = 0.9;

load ('disc_geneV20_data')
x = find(classnew == 0);
y = find(classnew == 1);

cases = trans_data(x,:);
controls = trans_data(y,:);

file_result=sprintf('result_%s_%d','disc_geneV20_data',sup)
fid = fopen(file_result,'w');
fclose(fid);

func_supmax(sup,eps,0.2,cases,controls,filter,file_result);
func_supmax(2,0,0.2);
func_supmax(sup,eps,0.2,controls,cases,filter,file_result);

这是主函数,我把主函数的输入直接写上了,使用二进制的矩阵,但是又报错是在第18行Missing variable or function.在网上查了相关的,但是好像我的都没有那种问题啊,非常感谢回复

cystal 发表于 2010-11-6 09:36

回复 2: zhouyang664 的帖子

% - datafile is the data file in which, there should be two variables,
%      trans_data: binary matrix, each row is a sample, and each column is an item, a 1' in (i,j) means sample i has item j
%      classnew: a binary column vector, which tells class label for each of the sample
% - discR: the parameter r defined in the paper (support difference)

zhouyang664 发表于 2010-11-6 09:50

唉.... 见习教研室主任,无权删帖啊!

zhouyang664 发表于 2010-11-6 09:56

本帖最后由 zhouyang664 于 2010-11-6 09:57 编辑

我给你提几点建议啊!

我觉得你这个函数里的data.txt在程序中出现,也就是这个函数根本就没有输入参数!
应该将主函数第一句改为:
function run_SMP()

还有这里:
file_result=sprintf('result_%s_%d',"data.txt",sup)
为啥要用双引号呢?

fid = fopen(file_result,'w');
fclose(fid);
这两句又是干什么的呢?

func_supmax这个函数我就不明白了....

以上几个建议,你参考一下!

cystal 发表于 2010-11-6 10:01

回复 6 # zhouyang664 的帖子
最开始是这样的:
function run_SMP(datafile,discR)
% - datafile is the data file in which, there should be two variables,
% trans_data: binary matrix, each row is a sample, and each column is an item, a 1' in (i,j) means sample i has item j
% classnew: a binary column vector, which tells class label for each of the sample
% - discR: the parameter r defined in the paper (support difference)
sup = discR;
eps = 0;
filter = 0.9;
load (datafile);
x = find(classnew == 0);
y = find(classnew == 1);
cases = trans_data(x,:);
controls = trans_data(y,:);
file_result=sprintf('result_%s_%d',datafile,sup);
fid = fopen(file_result,'w');
fclose(fid);
func_supmax(sup,eps,discR,cases,controls,filter,file_result);
func_supmax(discR,0,discR,);
func_supmax(sup,eps,discR,controls,cases,filter,file_result);
1,本来是有参数的,我方便运行就直接写入了。
2,双引号我后来改了。
3,file_result=sprintf('result_%s_%d','disc_geneV20_data',sup)
fid = fopen(file_result,'w');
fclose(fid);这三句的功能我不是很清楚,只有中间的数据'disc_geneV20_data'文件是我自己后来修改的。
4,func_supmax是自定义函数

zhouyang664 发表于 2010-11-6 10:26

本帖最后由 zhouyang664 于 2010-11-6 10:33 编辑

回复 3 # zhouyang664 的帖子

明白了,多谢提点!
续:主题 id 是?
我没找到,论坛也没有搜索到!

qibbxxt 发表于 2010-11-6 10:36

不知道这是谁写的程序,真是很费劲trans_data这个数据在什么地方呢?

zhouyang664 发表于 2010-11-6 10:38

既然出错在第18行,就是子函数出错了,你放这么一大堆主函数干什么呢?
文件操作我也不是很行,静待高人!

cystal 发表于 2010-11-6 16:19

本帖最后由 cystal 于 2010-11-6 16:21 编辑

回复 12 # qibbxxt 的帖子

从原作者那我总共得到的有两个数据文件,一个是之前的那个,一个是这个。(.txt都是我后加的,方便上传)

页: [1]
查看完整版本: Attempt to reference field of non-structure array