excel加载link打不开excllink文件,而且普通excel文件打开没有link工具,该重新下载matlab吗?

Excel Link是一个在Windows环境下实现Excel与Matlab进行链接的插件。通过连接Excel和Matlab,用户可以在Excel工作表空间和宏编程工具中使用Matlab的数值计算,图形处理等功能,不需要脱离Excel环境。同时由Excel Link来保证两个工作环境中的数据交换和同步更新。

1. Excel Link的安装和和设置 首先,在系统中安装Excel软件。然后安装Matlab和Excel Link,用Matlab安装盘开始安装,选择自定义安装中,在选中组件ExcelLink,如下图所示:


安装完Excel Link后还需要在Excel中进行一些设置后才能使用。
启动Excel,选择菜单“工具”项下的“加载宏”项,弹出如下对话框:


经过以上的设置后就可以开始使用Excel Link了。


根据给定的Excel数据执行Matlab命令。
在工作表中使用时的语法:
参数command,Matlab将执行的命令,命令需要写成“command”(使用双引号引起来)的形式。
参数 inputs 传给Matlab命令的变长输入参数列表。列表是包含数据的工作表单元格范围。
函数返回单一数值或者是字符串,结果返回到调用函数的单元格中。
例如matlabfcn(”sum”,B1:B10);把从B1到B10的单元格中数据相加,如下图示:


 并将结果返回到当前的活动单元格。即A11,结果如下图。


根据给定的Excel数据执行Matlab命令,并将结果返回到指定的单元格中。
在工作表中的使用语法:
参数edat,指定返回值写入在工作表中的位置。如果edat用双引号引起来,则edat必须是单元格地址或范围的名字。如果参数不用引号引起edat的形式,则通过计算获得矩阵名。
例如:matlabsub(”sum”,”A1”,B1:B10);把工作表中从单元格B1到B10的数据相加,并将结果返回到单元格A1中。
注意:edat指定的位置不能包含matlabsub所在的位置。
将Excel工作表中的数据追加到Matlab中指定的矩阵中如果该矩阵不存在,则创建矩阵。
在工作表中使用的语法:
注意要追加的数据维数要和原矩阵中的维数相匹配,否则出错。


将A1:A2中的数据追加到矩阵后,如下图示


成为矩阵的第四列,如下图示。

删除Matlab空间中指定的矩阵
在工作表中使用的语法:
Var_name,是要删除的矩阵名,如果矩阵名在引号内“var_name”的形式,则直接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。
将命令(写成字符串的形式)传到Matlab中执行。
在工作表中使用的语法:
参数command如果是用引号引起来”command”的形式,则是直接指定命令;如果不用引号引起来command的形式,则command必须是包含了命令字符串的工作表的单元格地址或者是范围。
将指定的Matlab矩阵写入到Excel工作表中的指定位置。
在工作表中使用的语法:
参数Var_name,是要写入工作表的矩阵名,如果矩阵名在引号内“var_name”的形式,则直接指定变量名,如果var_name不用引号引起来,则通过计算获得实际矩阵的名字。
参数edat指定了矩阵写入工组表的位置。如果参数是用引号引起”edat”的形式,则是直接指定矩阵名,如果参数不用引号引起edat的形式,则通过计算获得矩阵名。
将矩阵a写入工作表sheet1以单元格B1起始的位置,如果a是一个2行3列的矩阵,则矩阵占据sheet1的B1到D2的空间。如果在A1中有字符串a,则MLGetMatrix(A1,” sheet1!C1”)的作用与MLGetMatrix(”a”,”sheet1!C1”)相同。函数运行结果如图示。


将MatLab矩阵传送给Excel VBA变量,只能在宏子例程中使用。
参数ML_var_name是将获取的矩阵名。如果矩阵名在引号内“ML_var_name”的形式,则直接指定变量名,如果ML_var_name不用引号引起来,则通过计算获得实际矩阵的名字。
参数VBA_var_name,将其Matlab矩阵数据传给的VBA变量名,不用引号将其引起来。
用指定位置的Excel工作表中的数据,创建或者覆盖Matlab矩阵。
在工作表中使用的语法:
参数var_name是将有被创建或者被覆盖的矩阵名。如果指定的矩阵不存在,则创建该矩阵,如果矩阵已经存在,则覆盖该矩阵。
参数mdat,指定工作表中的位置。
例如:工作表中有A1到C2的数据,使用函数MLPutMatrix(”c”,A1:C2),则可以将这些数据写到Matlab矩阵c中,如下图示。


注意:如果修改工作表中的数据,则Matlab中的矩阵相应发生变化。如果把数据剪切到别的地方,如D1到F2,则函数MLPutMatrix(”c”,A1:C2)会自动更改为MLPutMatrix(”c”,D1:F2)
使用VBA变量的数据创建或者覆盖Matlab 矩阵。只能在宏子例程中使用。
参数ML_var_name是将被创建或覆盖的矩阵名。如果矩阵名在引号内“ML_var_name”的形式,则直接指定变量名,如果ML_var_name不用引号引起来,则通过计算获得实际矩阵的名字。
参数VBA_var_name,将其数据传给Matlab矩阵的VBA变量名,不用引号将其引起来。
如果VBA_var_name变量包含字符串的数据,则输出到Matlab为元胞数组格式。
用VBA变量DataK中的数据创建或着覆盖Matlab矩阵K。

Link函数中有两种定义变量的方式:直接定义,即将变量用双引号标记则是直接定义变量,例如MLGetMatrix(”bonds”,”sheet1!C1”),其中bonds是直接定义的变量;间接定义,函数中的不用双引号的工作表单元地址或行列名称被看作是间接变量,函数对其指引的内容进行操作。工作表单元地址可以包含页表序号,例如MLDeleteMatrix(B1);单元格B1中的内容为a,则相当于执行MLDeleteMatrix(”a”);
(3) 建议使用Excel Link的自动计算模式。如果在手动计算模式下使用MLGetMatrix函数,当在单元格中输入完函数等式时,需要按F9键执行,而按下F9键将有可能引起其他工作表函数的重复执行,产生不可预料的后果。设置Excel Link自动计算模式方法如下:在Excel“工具”菜单的“选项”,选择重新计算标签,图4.2.13。
(4) 如果需要在工作表中重新计算Excel Link函数,最好按F2键和回车键单步执行每个函数。
(5) 如果在MLGetMatrix函数中使用了单元的直接地址,那么当删除了行或列或者将函数从其他单元复制到新的单元后,一定要重新修改地址。Excel Link不能自动改变MLGetMatrix中的地址。
(6) 在打开一个包含ExcelLink函数的Excel数据表的时候,Excel会自动从上到下,从左到右地执行这些函数,所有有可能出现如“#COMMAND!”或“#NONEXIST”等Excel错误提示,只需关闭所有Matlab图形窗口,然后按F2键并回车重新单步执行单元格里地函数就可以了。


然后在工程管理器中插入模块,如下图:


在模块代码区域写下如下代码,如下图:


弹出引用对话框,选择Excel Link,如下图:


确定后,即可运行该程序,结果与例1相同。

}

将数据从文件名所表示的文件中加载到数组 A 中。

从系统剪贴板加载数据,而不是从文件加载数据。

将 delimiterIn 解释为 ASCII 文件、文件名或剪贴板数据中的列分隔符。可以将 delimiterIn 与上述语法中的任何输入参数一起使用。

在分隔符输出中返回检测到的分隔符字符,并使用前面语法中的任何输入参数检测headerlinesOut 中检测到的标题行数。默认情况下,Octave 没有importdata() 函数的支持,所以要搜索并安装这个包下面的例子Octave 安装工作。

该例中我们将加载和显示图像文件。

运行该文件,MATLAB显示出图像文件。

注意:该图像文件必须保存在当前目录。

本例中,我们在MATLAB中导入文本文件,并指定分隔符和列标题。

运行该文件,显示以下结果:SunDay

本例讲的是如何从剪贴板导入数据到MATLAB。

复制到剪贴板中的以下几行:

运行该文件,显示以下结果:A =

MATLAB 中 importdata 函数是一个高层次的函数。如果要处理低级别的文件,在MATLAB中的 I / O 功能允许读取或写入数据到一个文件中的大部分控制权。但是,使用这些功能的要求是这些文件需要具有更加详细的信息,这样能够提高工作效率。

MATLAB字节或字符的读取和写入操作提供了以下功能:函数描述

fclose关闭一个或全部已打开的文件

fgetl从文件读取行, 删除换行符

fgets从文件读取行, 保留换行符

fopen打开文件, 或获取有关打开的文件的信息

fprintf将数据写入文本文件

fread从二进制文件读取数据

frewind将文件位置指示器移动到打开文件的开头

fscanf从文本文件读取数据

fseek移动到文件中的指定位置

ftell获得打开文件的位置

fwrite将数据写入二进制文件

MATLAB导入文本数据文件与低级别的I/O

MATLAB 低层次的导入文本数据文件由以下函数实现:fscanf 函数读取文本或 ASCII 文件格式的数据。

fgetl 函数和 fgets 函数读取一行的文件,换行符分隔每一行。

fread 函数读出的数据流的字节或位的级别。

我们有 myfile.txt 文本数据文件保存在我们的工作目录。该文件存储3个月的降雨量数据,分别是2012年的6月,7月和8月。

myfile.txt 包含重复的数据集的时间,一个月的雨量测量五个数据项。头数据存储数个月的中号,所以我们有M组测量。

我们将数据导入此文件,并显示这些数据。步骤如下:使用 fopen 函数打开文件并获得文件标识符。

描述文件中的数据格式说明符,如 '%s' 为一个字符串,'%d' 为一个整数,或 '%f' 表示一个浮点数。

要跳过文字字符的文件,包括他们的格式描述。要跳过一个数据字段,在符使用一个星号(“*”)。

缺省情况下,fscanf读取数据,直到它可以根据我们的格式说明描述的数据不匹配,或它到达文件末尾的。在这里,我们将使用for循环阅读3组数据,每一次,它会读取7行5列。

我们将创建一个名为 mydata 在工作区中,从文件中读取数据存储结构。这种结构具有三个字段:时间、月和 raindata 阵列。

运行该文件,显示以下结果:12:00:00

}
1. 进程相关数据结构
2. 内核中的队列/链表对象
3. 内核模块相关数据结构
4. 文件系统相关数据结构
5. 内核安全相关数据结构
6. 系统网络状态相关的数据结构
7. 系统内存相关的数据结构
8. 中断相关的数据结构
9. 进程间通信(IPC)相关数据结构
 

我们知道,在linux内核中,用file结构表示打开的文件描述符,而用inode结构表示具体的文件

以字节为单位的文件大小
//装载点所在的父文件系统的vfsmount结构 fs we are mounted on,文件系统之间的父子关系就是这样实现的 mnt_sb指针建立了与相关的超级块之间的关联(对每个装载的文件系统而言,都有且只有一个超级块实例) //链表元素,用于父文件系统中的mnt_mounts链表

对于消息队列来说,睡眠的发送者放置在msg_queue的q_senders链表中,链表元素使用下列数据结构

这里不需要额外的信息,因为发送进程是sys_msgsnd系统调用期间进入睡眠,也可能是通过sys_ipc系统调用期间进入睡眠(sys_ipc会在唤醒后自动重试发送操作)

//指向msg_msg实例的指针,在消息可用的情况下,该指针指定了复制数据的目标地址

每个消息队列都有一个msqid_ds结构与其关联

下图说明了消息队列所涉及各数据结构的相互关系

Linux内核通过数据结构之间互相的连接关系,形成了一套虚拟的命名空间的虚拟化概念

每个PID命名空间都具有一个进程,其发挥的作用相当于全局的init进程,init的一个目的是对孤儿调用wait4,命名空间局部的init变体也必须完成该工作。child_reaper保存了指向该进程的task_struct的指针 2. level表示当前命名空间在命名空间层次结构中的深度。初始命名空间的level为0,下一层为1,逐层递增。level较高的命名空间中的ID,对level较低的命名空间来说是可见的(即子命名空间对父命名空间可见)。从给定的level位置,内核即可推断进程会关联到多少个ID(即子命名空间中的进程需要关联从当前命名空间一直到最顶层的所有命名空间) 3. parent是指向父命名空间的指针

PID的管理围绕着两个数据结构展开,struct pid是内核对PID的内部表示、struct upid则表示特定的命名空间中可见的信息

//2. 指向该ID所属的命名空间的指针 3. 所有的upid实例都保存在一个散列表中,pid_chain用内核的标准方法实现了散列溢出链表 task是一个数组,每个数组项都是一个散列表头,对应于一个ID类型,因为一个ID可能用于几个进程,所有共享同一个给定ID的task_struct实例,都通过该列表连接起来,PIDTYPE_MAX表示ID类型的数目

可以看到,内核用数据结构中的这种N:N的关系,实现了一个虚拟的层次命名空间结构

5. struct net包含所有网络相关的命名空间参数
//使用计数器,指定了使用该命名空间的进程数目 //双链表表头,保存了VFS命名空间中所有文件系统的vfsmount实例,链表元素是vfsmount的成员mnt_list
}

我要回帖

更多关于 加载主类时出现linkageerror 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信