Matlab 如何将表的值传递给矩阵
我正试图在matlab中制作一个GUI,它接受表格中的值,并将其转换为矩阵,但想法是用户可以先设置行数和列数。Matlab 如何将表的值传递给矩阵,matlab,user-interface,linear-algebra,Matlab,User Interface,Linear Algebra,我正试图在matlab中制作一个GUI,它接受表格中的值,并将其转换为矩阵,但想法是用户可以先设置行数和列数。 面板看起来像这样 按钮的代码是 function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % ha
面板看起来像这样
按钮的代码是
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
rows =str2double(get(handles.edit_rows,'String'));
cols=str2double(get(handles.edit_cols,'String'));
num_elem=cell(rows,cols);
num_elem(:,:)={"};
set(handles.uitable1,'Data',num_elem)
set(handles.uitable1,'ColumnEditable',true(1,cols))
但是,怎样才能导出或转换为矩阵,以便对其应用函数呢
更新
在byetisener的帮助下,我将代码更新为
函数pushbutton1\u回调(hObject、eventdata、句柄)
但这是一个空矩阵它不是获取单元格的值,假设按钮同时调整大小并复制值,如果不是,那么矩阵调整大小后如何复制另一个按钮?我不确定这是否回答了您的问题,但您可以采用这种方法 首先,如果您感兴趣,在MATLAB中使用点表示法比setter和getter方法更快 因此,您可以做的是:
handles.uitable1.Data=单元格(行、列);
或者,当然,或者:
set(handles.uitable1,'Data',单元格(行,列));
如果要将uitable中的数据转换为矩阵,可以使用:
matrix=cell2mat(handles.uitable1.Data);
如果表格包含非数值:
tableData=handles.uitable1.Data;
tableData=[str2double(tableData(:,1)),cell2mat(tableData(:,2));
希望这有帮助。如果您解决了问题,请告诉我。我不确定这是否回答了您的问题,但您可以采用这种方法 首先,如果您感兴趣,在MATLAB中使用点表示法比setter和getter方法更快 因此,您可以做的是:
handles.uitable1.Data=单元格(行、列);
或者,当然,或者:
set(handles.uitable1,'Data',单元格(行,列));
如果要将uitable中的数据转换为矩阵,可以使用:
matrix=cell2mat(handles.uitable1.Data);
如果表格包含非数值:
tableData=handles.uitable1.Data;
tableData=[str2double(tableData(:,1)),cell2mat(tableData(:,2));
希望这有帮助。如果您解决了问题,请告诉我。您的代码存在一些问题:
num\u elem=
1×2单元阵列
{0×0字符}{0×0字符}
filas=str2double(handles.edit\u fila.String);
column=str2double(handles.edit\u col.String);
%此循环查找空行以写入新数据
对于i=1:长度(handles.uitable1.Data)
if isempty(handles.uitable1.Data{i,1})
handles.uitable1.Data(i,1)={filas};
handles.uitable1.Data(i,2)={column};
打破
其他的
disp(“发生错误”);
结束
结束
%此双for循环检查是否存在任何空单元格
%如果找到一个,它会将其更改为0,因此所有单元格都具有相同的类型
对于i=1:长度(handles.uitable1.Data)
对于j=1:2
if为空(handles.uitable1.Data{i,j})
handles.uitable1.Data(i,j)={0};
其他的
disp(“发生错误”);
结束
结束
结束
矩阵=cell2mat(handles.uitable1.Data);%你想要的矩阵
只要检查所有变量名是否相同,不要忘记接受is作为答案。希望能有帮助 您的代码存在一些问题:
num\u elem=
1×2单元阵列
{0×0字符}{0×0字符}
filas=str2double(handles.edit\u fila.String);
column=str2double(handles.edit\u col.String);
%此循环查找空行以写入新数据
对于i=1:长度(handles.uitable1.Data)
if isempty(handles.uitable1.Data{i,1})
handles.uitable1.Data(i,1)={filas};
handles.uitable1.Data(i,2)={column};
打破
其他的
disp(“发生错误”);
结束
结束
%此双for循环检查是否存在任何空单元格
%如果找到一个,它会将其更改为0,因此所有单元格都具有相同的类型
对于i=1:长度(handles.uitable1.Data)
对于j=1:2
if为空(handles.uitable1.Data{i,j})
handles.uitable1.Data(i,j)={0};
其他的
disp(“发生错误”);
结束
结束
结束
矩阵=cell2mat(handles.uitable1.Data);%你想要的矩阵
只要检查所有变量名是否相同,不要忘记接受is作为答案。希望能有帮助 你想改变信仰
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
filas=str2double(get(handles.edit_fila,'String'));
column=str2double(get(handles.edit_col,'String'));
num_elem=cell(filas,column);
num_elem(:,:)={''};
set(handles.uitable1,'Data',num_elem)
set(handles.uitable1,'ColumnEditable',true(1,column))
handles.uitable1.Data = cell(filas, column);
matrix = cell2mat(handles.uitable1.Data);
matrix