matlab输入矩阵 大型矩阵的输入

水木-数学工具-Matlab最大矩阵多大?
主题文章列表
下一页&共1页&
Matlab最大矩阵多大?
发信人:&chicagobox&(nicheng),&信区:&MathTools
标&&题:&Matlab最大矩阵多大?
发信站:&水木社区&(Tue&Jun&&4&16:50:01&2013),&站内
似乎一个0兆,但是文本才一兆啊?怎么这么无效?还是我哪里有错?谢谢
Posted&by&UcSMTH&for&iPhone.
※&来源:·水木社区&http://www.newsmth.net·[FROM:&202.140.72.*]
Re: Matlab最大矩阵多大?
发信人:&Hakkk&(蓝猫淘气3k问·荷兰篇),&信区:&MathTools
标&&题:&Re:&Matlab最大矩阵多大?
发信站:&水木社区&(Tue&Jun&&4&17:01:10&2013),&站内
30000x4咋会300兆
【&在&chicagobox&(nicheng)&的大作中提到:&】
:&似乎一个0兆,但是文本才一兆啊?怎么这么无效?还是我哪里有错?谢谢
:&Posted&by&UcSMTH&for&iPhone.
:&※&来源:·水木社区&http://www.newsmth.net·[FROM:&202.140.72.*]
:&...................
寄信人:&xinghe&(星河)
标&&题:&Re:&我明天可能会因为这个死了
发信站:&水木社区&(Wed&Dec&26&03:02:55&2007)
来&&源:&211.99.222.55
天啊!全才啊!
※&来源:·水木社区&newsmth.net·[FROM:&94.210.138.*]
Re: Matlab最大矩阵多大?
发信人:&xenapior&(4D&blocks),&信区:&MathTools
标&&题:&Re:&Matlab最大矩阵多大?
发信站:&水木社区&(Tue&Jun&&4&17:47:02&2013),&站内
如果是实数矩阵,占内存/1024^2约为960KB
【&在&chicagobox&(nicheng)&的大作中提到:&】
:&似乎一个0兆,但是文本才一兆啊?怎么这么无效?还是我哪里有错?谢谢
:&Posted&by&UcSMTH&for&iPhone.
:&※&来源:·水木社区&http://www.newsmth.net·[FROM:&202.140.72.*]
:&...................
※&来源:·水木社区&newsmth.net·[FROM:&218.22.21.*]
Re: Matlab最大矩阵多大?
发信人:&chicagobox&(nicheng),&信区:&MathTools
标&&题:&Re:&Matlab最大矩阵多大?
发信站:&水木社区&(Tue&Jun&&4&18:15:39&2013),&站内
谢谢,我再查一查。
【&在&Hakkk&的大作中提到:&】
:&30000x4咋会300兆
:&Posted&by&UcSMTH&for&iPhone.
※&来源:·水木社区&http://www.newsmth.net·[FROM:&112.120.214.*]
Re: Matlab最大矩阵多大?
发信人:&chicagobox&(nicheng),&信区:&MathTools
标&&题:&Re:&Matlab最大矩阵多大?
发信站:&水木社区&(Tue&Jun&&4&18:16:27&2013),&站内
谢谢,我可能把其他的一些也一起算了。如果这样,那么矩阵的占用内存应该和文本文件的大小差不多啊。
【&在&xenapior&的大作中提到:&】
:&如果是实数矩阵,占内存/1024^2约为960KB
:&Posted&by&UcSMTH&for&iPhone.
※&来源:·水木社区&http://www.newsmth.net·[FROM:&112.120.214.*]
Re: Matlab最大矩阵多大?
发信人:&xenapior&(4D&blocks),&信区:&MathTools
标&&题:&Re:&Matlab最大矩阵多大?
发信站:&水木社区&(Wed&Jun&&5&09:21:08&2013),&站内
……文本文件大小和占内存没有确定的关系。存储格式都不同的说。
【&在&chicagobox&(nicheng)&的大作中提到:&】
:&谢谢,我可能把其他的一些也一起算了。如果这样,那么矩阵的占用内存应该和文本文件的大小差不多啊。
※&来源:·水木社区&newsmth.net·[FROM:&218.22.21.*]
下一页&共1页&查看: 890|回复: 1|关注: 0
在matlab上实现ANP,如何输入矩阵的M文件
disp('————从文件 AA.txt 中构造判断矩阵————');
[fid_AA, message] = fopen('AA.txt','r');
if fid_AA == -1
& & error('!文件打开失败!');
[Waa,flag] = JudgementMatrix(fid_AA);
if flag == -1
& & warning('文件中的比较矩阵有问题,!!!构造失败!!!');
& & disp('!!!构造成功!!!');
fclose(fid_AA);
这里的AA文件怎么输入数据啊?
矩阵文件的(*.txt)格式要求(共4条)
% 1 空格开头的行,回车行,注释行(见第3条)在读取时都会被忽略.
% 2 每个矩阵要有维数(Dimension)和序号(Sequence),其次序可以颠倒,但是不能缺项,
%& &且关键字及其取值要各占一行(共4行,中间可以有空格行或空行),但关键字行尾不能有空格.
% 3 竖线&|&是注释标记,要独自占一行,但是不要在有效的矩阵元素行之后加竖线.
% 4 矩阵的元素只能用空格分开,每个元素后都可以跟空格,且空格的数量可以是任意多个.
%& &但是,需要强调的是,每一行第一个元素的前面不能有空格(参照第1条)!
% JudgementMatrix 函数开始
function [judge_matrix_unitize,flag] = JudgementMatrix(fid)
judge_matrix = 0;
judge_matrix_unitize = 0;
flag = 0; % 判断矩阵构造成功的标志
LineData = IgnoreLine(fid);&&% 跳到第一行有效的数据
Count = 0; % 矩阵计数器
Flag1 = 0; % 是否读取矩阵序号的开关
Flag2 = 0; % 是否读取矩阵列数的开关
Flag3 = 0; % 是否读取矩阵行数的开关
Sequence = 0; % 矩阵的序号
Dimension = 0; % 矩阵的阶
DCount = 0; % 同一文件中每个矩阵的阶数下标
LastCount = 0; % 同一文件中上一个矩阵的阶数下标
while( feof(fid) == 0 )
& & if strcmp(LineData, 'Sequence')
& && &&&LineData = IgnoreLine(fid);
& && &&&if LineData == -1
& && && && &warning('已经到了文件末尾,无数据可读取!');
& && && && &flag = -1;
& && && && &
& && &&&end
& && &&&Sequence = str2num(LineData);
& && &&&Flag1 = Flag1 + 1;
& & elseif strcmp(LineData, 'Dimension')
& && &&&LineData = IgnoreLine(fid);
& && &&&if LineData == -1
& && && && &warning('已经到了文件末尾,无数据可读取!');
& && && && &flag = -1;
& && && && &
& && &&&end
& && &&&DCount = DCount + 1;
& && &&&Dimension(DCount) = str2num(LineData);
& && &&&LastCount = DCount-1;
& && &&&if LastCount & 0 && Dimension(DCount) ~= Dimension(LastCount)
& && && && &flag = -1;
& && && && &warning('矩阵的维数不等,比较矩阵弄错了吧!');
& && &&&end
& && &&&Flag2 = Flag2 + 1;
& & if ( Flag1 & 1 || Flag2 & 1 )
& && &&&if Flag1 & 1
& && && && &c = num2str(Sequence);
& && && && &c = strcat('第',c);
& && && && &message = strcat(c, '个矩阵的上一个矩阵没有设置维数关键字&Dimension&!');
& && && && &flag = -1;
& && && && &warning(message);
& && && && &
& && &&&elseif Flag2 & 1
& && && && &c = num2str(Sequence);
& && && && &c = strcat('第',c);
& && && && &message = strcat(c, '个矩阵的上一个矩阵没有设置序号关键字&Sequence&!');
& && && && &warning(message);
& && && && &flag = -1;
& && && && &
& && &&&end
& & elseif ( Flag1 == 0 && Flag2 ==0 )
& && &&&warning('没有发现矩阵的序号或行数或列数关键字!请参考文件格式要求!');
& && &&&flag = -1;
& & elseif ( Flag1 == 1 && Flag2 == 1 )
& && &&&Matrix = 0;
& && &&&% 为了读分数矩阵,逐行读取再变为数值类型
& && &&&for i = 1:1:Dimension(DCount)
& && && && &LineData = IgnoreLine(fid);
& && && && &if LineData == -1
& && && && && & warning('已经到了文件末尾,无数据可读取!');
& && && && && & flag = -1;
& && && && && & judge_matrix_unitize = Unitize(Matrix);
& && && && && &
& && && && &end
& && && && &DoubleLine = str2num(LineData);
& && && && &[line_DoubleLine,colume_DoubleLine] = size(DoubleLine);
& && && && &if colume_DoubleLine ~= Dimension(DCount)
& && && && && & flag = -1;
& && && && &end
& && && && &for j = 1:1:colume_DoubleLine
& && && && && & Matrix(i,j) = DoubleLine(j);
& && && && &end
& && &&&end
& && &&&if flag == -1
& && && && && & judge_matrix_unitize = Unitize(Matrix);
& && && && && &
& && &&&end
& && &&&if isreal(Matrix)
& && && && &Count = Count + 1;
& && && && &if Sequence ~= Count
& && && && && & c = num2str(Sequence);
& && && && && & c = strcat('文件中编号为',c);
& && && && && & message = strcat(c,'的矩阵的序号没有按照顺序排列!');
& && && && && & warning(message);
& && && && &end
& && && && &% 最大特征值及其对应的特征向量
& && && && &[vector_lmd_max,lmd_max(Count)] = MaxEV(Matrix);
& && && && &for j = 1:1:Dimension(DCount)
& && && && && & judge_matrix(Count,j) = vector_lmd_max(j);
& && && && &end
& && && && &% 一致性检验
& && && && &CI(Count) = 0; % 一致性指标
& && && && &% 当矩阵的阶数 n & 3 时,判断矩阵永远具有完全一致性。
& && && && &if&&Dimension &= 3
& && && && && & % 一致性指标
& && && && && & CI(Count) = ( lmd_max(Count) - Dimension(DCount) ) / ( Dimension(DCount) - 1 );
& && && && && & if CI(Count) &= 0.1
& && && && && && &&&c = num2str(Sequence);
& && && && && && &&&c = strcat('第',c);
& && && && && && &&&message = strcat(c,'个矩阵的一致性指标CI不满足条件,建议调整该矩阵元素!');
& && && && && && &&&warning(message);
& && && && && && &&&flag = -1;
& && && && && && &&&
& && && && && & end
& && && && &end
& && &&&else
& && && && &c = num2str(Sequence);
& && && && &c = strcat('第',c);
& && && && &message = strcat(c, '个矩阵不是实矩阵吧?');
& && && && &flag = -1;
& && && && &warning(message);
& && && && &
& && &&&end
& && &&&Matrix = 0; % 矩阵清零
& && &&&Flag1 = 0; % 是否读取矩阵的开关复位
& && &&&Flag2 = 0; % 是否读取矩阵的开关复位
& & LineData = IgnoreLine(fid);
if flag == -1 || Dimension(DCount) ~= Count
& & flag = -1;
& & disp('未进行归一化的特征向量');
& & judge_matrix = judge_matrix'
& & % 特征向量归一化
& & disp('归一化的特征向量');
& & judge_matrix_unitize = Unitize(judge_matrix)
& & flag = 1;
& & judge_matrix = judge_matrix';
& & % 判断矩阵归一化
& & disp('归一化后的特征向量构成的判断矩阵');
& & judge_matrix_unitize = Unitize(judge_matrix)
% JudgementMatrix 函数结束
能给个样板不?我实在不知道在文档里输入哪些数据怎么输,谢谢!
求大神,拔刀相助
站长推荐 /2
Powered byMATLAB与大数据处理之二: 稀疏矩阵的处理 - MATLAB的日志,人人网,MATLAB的公共主页
好久不发状态了,大家还在吗?还在学习MATLAB么?
MATLAB与大数据处理之二: 稀疏矩阵的处理
& & & 如果在矩阵中,多数的元素为0,称此矩阵为稀疏矩阵(sparse matrix)。换句话说:矩阵中非零元素的个数远远小于矩阵元素的总数),并且非零元素的分布没有规律,则称该矩阵为稀疏矩阵。MATLAB中使用sparse函数可以大大减少稀疏矩阵所占的空间。参考以下程序:%% Set upclear allclose all&%% Illustrating Sparse Matrices (a drastic case)A = zeros(100);A(1,5) = 1;A(50,100)=2;&%% Converting to a Sparse data typeAsp = sparse(A);&whos&结果为:& Name&&&&&&& Size&&&&&&&&&&&& Bytes& Class&&&& Attributes&& A&&&&&&&& 100x100&&&&&&&&&&& 80000& double&&&&&&&&&&&&&& Asp&&&&&& 100x100&&&&&&&&&&&&& 428& double&&& sparse&&& &&&&&&&&&&&&&& 其实,最佳的建立稀疏矩阵的方式是使用sparse函数所带的稀疏矩阵生成功能,可以通过以下函数建立稀疏矩阵:i = [1 50 ];j = [5 100];s = [1 2 ];n = 100;m = 100;&S = sparse(i,j,s,m,n);&spy(S)whos&&&& 结果如下:& A&&&&&&&& 100x100&&&&&&&&&&& 80000& double&&&&&&&&&&&&&& Asp&&&&&& 100x100&&&&&&&&&&&&& 428& double&&& sparse&&&& S&&&&&&&& 100x100&&&&&&&&&&&&& 428& double&&& sparse&&
&& & 以上可以看出,使用稀疏矩阵可以使用更少的内存并且有更快的处理速度,这种快速处理速度是MATLAB提供了N多可以应用于稀疏矩阵处理的函数所致,可以使用sparfun查看。help sparfun&&&&&& 函数如下:&&&&&&& Sparse matrices.&& Elementary sparse matrices.&&& speye&&&&&& - Sparse identity matrix.&&& sprand...
阅读(5386)|
人人移动客户端下载查看: 4627|回复: 9|关注: 0
求教:Matlab大型矩阵运算问题
各位前辈,小弟现在算一个三维电磁场逆问题,其中有个矩阵J是的,运算中有J.'*J,除法运算等,我在计算中总是out of memory,现在将矩阵分块运算,但是计算后合并矩阵时又内存不足。
实在不知道这个问题怎么解决了,各位给个建议吧~而且23683是三维场剖分的单元数,为提高精度,以后估计还会加密剖分。
我的电脑是2GB内存。
Do you use the sparse matrix?
可悲的是,这不是稀疏矩阵~
关注者: 1
1. 用for 一行一行做运算
2.如果J 以后不用的话,结果直接覆盖J。 比如 不要用T = J.'*J 改成&&J = J.'*J;
这样只要J内存中放得下基本没有问题。
使用外部存储,例如硬盘。
分块矩阵乘法,不必要一行一行算,事先估计一下,每次读出多少行不至于造成内存溢出,然后适当分块就是了。
关注者: 1
原帖由 zqx917 于
22:53 发表
分块矩阵乘法,不必要一行一行算,事先估计一下,每次读出多少行不至于造成内存溢出,然后适当分块就是了。
能详细解释一下用外部存储如何解决内存不足的方法吗?
谢谢各位,师兄给了个建议,就是分块乘法计算后不在内存里面组合成大矩阵,全部依次写到文件中去。估计可行。
这样我的问题就转化为数值分析上的Ax = b,这里面A是的方阵。
解这种大矩阵用什么方法解好呢?LU分解、奇异值分解?
关注者: 19
原帖由 bill0213 于
10:54 发表
谢谢各位,师兄给了个建议,就是分块乘法计算后不在内存里面组合成大矩阵,全部依次写到文件中去。估计可行。
这样我的问题就转化为数值分析上的Ax = b,这里面A是的方阵。
解这种大矩阵用什么方法解好呢?LU分解、 ...
写到文件中去,那么计算Ax = b的时候,不是还要读出么?不是一样会出问题?不知道能不能实现, 呵呵。
一点一点算,算出来的就写到文件里边去,暂时不用的数据就clear掉,并且使用pack,然后再读下一批数据。
关注者: 15
The same want.
站长推荐 /2
Powered bymatlab矩阵操作大全_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
matlab矩阵操作大全
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩10页未读,继续阅读
你可能喜欢

我要回帖

更多关于 matlab输入矩阵 的文章

 

随机推荐