声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1912|回复: 8

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

[复制链接]
发表于 2009-5-6 16:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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


不成功,请指教~
回复
分享到:

使用道具 举报

发表于 2009-5-6 17:02 | 显示全部楼层

回复 楼主 huangyaowen 的帖子

data = load('PathName')
改成
data=load([PathName,FileName])
PathName仅是文件路径,不包括文件名
 楼主| 发表于 2009-5-6 17:08 | 显示全部楼层
解决了,谢谢
 楼主| 发表于 2009-5-6 17:17 | 显示全部楼层

回复 沙发 friendchj 的帖子

data =
    GGG: [128x300 double]

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

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

能够解决吗?:@)

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


变成了 一个1*2矩阵,具体结果
data =
    GGG: [128x300 double]

ans =
     1     1

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

[ 本帖最后由 ChaChing 于 2009-5-8 23:57 编辑 ]
发表于 2009-5-6 22:00 | 显示全部楼层
help load
data=load([PathName,FileName]), data已经是struct array
使用load([PathName,FileName])试试
 楼主| 发表于 2009-5-8 15:28 | 显示全部楼层

回复 5楼 ChaChing 的帖子

恩 行了 谢谢

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

回复 6楼 huangyaowen 的帖子

文件名称是matlab.m? 为何不是matlab.mat? 格式是否为mat格式?
若是的话, load进来後, 原先的变数名称不变! LZ的例子, 就是size(qqqq)
若一定要使用data=load(...), 则使用size(data.qqqq)
 楼主| 发表于 2009-5-8 16:22 | 显示全部楼层

回复 7楼 ChaChing 的帖子

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

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

Error in ==> bysj03>transform_Callback at 160
[row col] = 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
 楼主| 发表于 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)
[FileName PathName] = uigetfile(('*.mat'),'请选择原始数据文件');
%data = load(PathName)
load([PathName,FileName]);
data = qqqq;
[row col] = size(data);
set(handles.text3,'string',row);
set(handles.text4,'string',col);

“转换”回调函数:
function transform_Callback(hObject, eventdata, handles)
data = data'
[row col] = 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
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-6 03:07 , Processed in 0.075558 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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