Matlab使用xlsread读取excel表格生成矩阵

4.8
(4)

今天,帮网友解决了一个Matlab通过xlsread函数读取excel表格,并生成特定形式矩阵的问题。需要解决的具体问题为:有网友问了个关于如何使用Matlab读取excel表格,并按照一定的方式来生成一个新的矩阵。大致上,要读取一个excel表格中的三列数据,并用这三列数据中的前两列中的元素值来规定目标矩阵得第几行第几列,第三列数据来表示这矩阵的第几行几列的元素值。

嗯,听起来有点绕,我是很长时间都没反应过来到底要干啥。直到对方给我发来一张图片,我才理解了其中的意思。咱们不去管对方这么做的意义,直接给代码就行了。

Matlab使用xlsread读取excel表格生成矩阵

数据大概是十行三列的数据,要生成十行十列的矩阵,下面开始正文解答:

下图为对方跟我解释的具体要求:

Matlab使用xlsread读取excel表格生成矩阵

比如,第一列的第一个数为0,第二列的第一个数为3,第三列的第一个数为15.97。那么,A03=9*15.97/100。依次类推,当然前两列数字都是0-9的自然数。不然,也没法实现。

直接上代码:

clc
clear all
i=xlsread('data.xlsx','sheet1','A2:A11');
i=xlsread('data.xlsx','sheet1','B2:B11');
i=xlsread('data.xlsx','sheet1','C2:C11');
A=zeros(10,10);
i=i+1;
j=j+1;
for k=1:10
A(i(k),j(k))=9*x(k)/100;
end

到此,就实现了对方的要求。接着,对方说需要让A51=A15,类似这个样子,我还以为是转置。最后才发现是下面这句话的意思:

这里实现了将x的第k个值运算赋值给了A的i(k)行j(k)列,对方又需要同时赋值给i(k)列j(k)行。

此外,需要将A矩阵中没赋值,即为0的地方,需要赋值为1e20。

下面是,最终实现的代码:

clc
clear all
i=xlsread('data.xlsx','sheet1','A2:A11');
i=xlsread('data.xlsx','sheet1','B2:B11');
i=xlsread('data.xlsx','sheet1','C2:C11');
A=zeros(10,10);
A(:,:)=1e20;
i=i+1;
j=j+1;
for k=1:10
A(i(k),j(k))=9*x(k)/100;
A(j(k),i(k))=9*x(k)/100;
end

到此,也算解决了对方的问题,哈。

这里说一下为啥 i=i+1,j=j+1:这是因为对方的i跟j数据中都是0-9的自然数,而Matlab中的元素位置必须用正整数表示,所以就都加了1,即元素范围变成1-10,对应正好可以表示10*10矩阵的元素位置。

Matlab使用xlsread读取excel表格生成矩阵

最后,希望本文这种思路可以帮到各位。

共计4人评分,平均4.8

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/1515.html

(1)
微信公众号
古哥的头像古哥管理团队
上一篇 2021年01月21日 22:14
下一篇 2021年01月23日 15:32

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号