huangyaowen 发表于 2009-5-6 16:53

[新手]一个GUI读MAT的问题

我想在gui上用一个butto读一个MAT的(一个矩阵)进入工作区间,程序如下:
% --- Executes on button press in open_data.
function open_data_Callback(hObject, eventdata, handles)
% hObject    handle to open_data (see GCBO)
% eventdatareserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
= uigetfile(('*.mat'),'请选择原始数据文件');
data = load('PathName')

不成功,请指教~

friendchj 发表于 2009-5-6 17:02

回复 楼主 huangyaowen 的帖子

data = load('PathName')
改成
data=load()
PathName仅是文件路径,不包括文件名

huangyaowen 发表于 2009-5-6 17:08

解决了,谢谢

huangyaowen 发表于 2009-5-6 17:17

回复 沙发 friendchj 的帖子

data =
    GGG:

>> GGG
??? Undefined function or variable 'GGG'.

请问我通过GUI导入 和在工作区通过load GGG,MAT 效果不一样的吗 我导入以后试这个在工作区查看这个矩阵,但是没有成功。

能够解决吗?:@)

查看了一下,
function open_data_Callback(hObject, eventdata, handles)
% hObject    handle to open_data (see GCBO)
% eventdatareserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
= uigetfile(('*.mat'),'请选择原始数据文件');
%data = load(PathName)
data=load()
size(data)

变成了 一个1*2矩阵,具体结果
data =
    GGG:

ans =
   1   1

我的想法是,把mat里面的矩阵弄进来。:@( 怎么办呢? GGG这个文档还没进入workspace

[ 本帖最后由 ChaChing 于 2009-5-8 23:57 编辑 ]

ChaChing 发表于 2009-5-6 22:00

help load
data=load(), data已经是struct array
使用load()试试

huangyaowen 发表于 2009-5-8 15:28

回复 5楼 ChaChing 的帖子

恩 行了 谢谢

原来一直都是成功的,只是在WORKSPACE那里不显示而已,我矩阵的名字和文件名不一样,比如我的文件名称是matlab.m 里面是一个名称为qqqq的矩阵,我用
= uigetfile(('*.mat'),'请选择原始数据文件');
data=load()
size(???)
如何查看这个矩阵的大小呢?这里的“???”如何确定,即导入mat后,可以识别里面的矩阵名,谢谢指教~

ChaChing 发表于 2009-5-8 15:59

回复 6楼 huangyaowen 的帖子

文件名称是matlab.m? 为何不是matlab.mat? 格式是否为mat格式?
若是的话, load进来後, 原先的变数名称不变! LZ的例子, 就是size(qqqq)
若一定要使用data=load(...), 则使用size(data.qqqq)

huangyaowen 发表于 2009-5-8 16:22

回复 7楼 ChaChing 的帖子

不好意思,我打错了 文件名称是matlab.mat。
我需要的是,load进一个含有矩阵的mat,然后size它,以便取出它的行列数。
我刚才试了一下,没什么问题,就是不知道怎么确定size里面的名称,不知道怎么load进mat的时候自动识别里面的矩阵名,

还有个问题,我用
= size(qqqq);
set(handles.text3,'string',row);
set(handles.text4,'string',col);
成功显示出来行列,但是我想做一个“转换”按钮,实现矩阵行列兑换(a=a')的形式然后再次现实。不知道在“转换”回调函数里怎么写,还有全局变量怎么设置好呢?请指教~
我的方法,在“转换”回调函数下
= size(qqqq')
set(handles.text3,'string',row);
set(handles.text4,'string',col);
提示是
??? Undefined function or variable 'qqqq'.

Error in ==> bysj03>transform_Callback at 160
= size(qqqq')

Error in ==> gui_mainfcn at 96
      feval(varargin{:});

Error in ==> bysj03 at 42
    gui_mainfcn(gui_State, varargin{:});

Error in ==> guidemfile>@(hObject,eventdata)bysj03('transform_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback

huangyaowen 发表于 2009-5-8 16:47

现在尝试的方法
我的初始化:
function bysj03_OpeningFcn(hObject, eventdata, handles, varargin)
global row
global col
%global qqqq
global data

打开数据回调函数:
function open_data_Callback(hObject, eventdata, handles)
= uigetfile(('*.mat'),'请选择原始数据文件');
%data = load(PathName)
load();
data = qqqq;
= size(data);
set(handles.text3,'string',row);
set(handles.text4,'string',col);

“转换”回调函数:
function transform_Callback(hObject, eventdata, handles)
data = data'
= size(data)
set(handles.text3,'string',row);
set(handles.text4,'string',col);


按了“转换”后错误的提示是:
??? At compilation, "data" was determined to be a variable and this
variable is uninitialized."data" is also a function name and previous versions of MATLAB would have called the function.
However, MATLAB 7 forbids the use of the same name in the same
context as both a function and a variable.

Error in ==> bysj03>transform_Callback at 162
data = data'

Error in ==> gui_mainfcn at 96
      feval(varargin{:});

Error in ==> bysj03 at 42
    gui_mainfcn(gui_State, varargin{:});

Error in ==> guidemfile>@(hObject,eventdata)bysj03('transform_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback
页: [1]
查看完整版本: [新手]一个GUI读MAT的问题