声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1534|回复: 14

[编程技巧] 求助:如何表示矩阵里面的矩阵啊

[复制链接]
发表于 2006-10-13 09:49 | 显示全部楼层 |阅读模式

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

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

x
s=[s11(:,2) s12(:,2)
     s21(:,2)  s22(:,2)]
s11 s12 s21 s22 是已知的2维方阵.我想通过循环把s表示出来
但是我不知道怎么调用矩阵里面的矩阵的元素,    s(1)!=s11(:,2),我想通过取数组元素的方法把s11(:,2)取出来
因为这仅仅是2维的,如果是8维的输入就比较麻烦了
麻烦各位大哥指点一下!本人不盛感激!
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-10-13 09:57 | 显示全部楼层
有没有人啊?
哪位大哥帮帮忙啊
发表于 2006-10-13 10:05 | 显示全部楼层
原帖由 founder2468 于 2006-10-13 09:57 发表
有没有人啊?
哪位大哥帮帮忙啊



老实说,我看了半天都没有看明白
发表于 2006-10-13 10:14 | 显示全部楼层
原帖由 founder2468 于 2006-10-13 09:49 发表
s=[s11(:,2) s12(:,2)
     s21(:,2)  s22(:,2)]
s11 s12 s21 s22 是已知的2维方阵.我想通过循环把s表示出来
但是我不知道怎么调用矩阵里面的矩阵的元素,    s(1)!=s11(:,2),我想通过取数组元素的方法把s11(:, ...

表示太复杂,看不懂。
 楼主| 发表于 2006-10-13 10:33 | 显示全部楼层
是我没有说清楚.看原题
clear
clc
a=[1;1]
load canshu.mat  %导入S参数
m=2 %端口数
n=3 %频点数
for p=1:n  %频率循环
   S=[S11(p,2)*exp(j*S11(p,3)),S12(p,2)*exp(j*S12(p,3));S21(p,2)*exp(j*S21(p,3)),S22(p,2)*exp(j*S22(p,3))]
   c=S*a
   b(1:m,p)=c  % 改成b(2,j)=c不行
   for k=1:m
   R=b(k,p)/a(k)
   T(k,p)=R  %T为复反射系数
   v(k,p)=(1+abs(T(k,p)))/(1-abs(T(k,p))) %将反射系数转化为驻波
end
end
plot(S11(:,1),abs(v(1,:)),'-r',S11(:,1),abs(v(2,:)),'-b')
title('复反射系数与频率的函数')
xlabel('频率MHz')
ylabel('复反射系数')
text(2010,2.5,'红色--1端口 蓝色--2端口')
上面的程序仅仅是2维的,如果是8维的话,表示S太麻烦了,请问有没有更好的办法?
 楼主| 发表于 2006-10-13 10:36 | 显示全部楼层
canshu.mat 里面包含S11,S12,S21,S22四个变量
也就是说S11系列的参数值可以通过canshu.mat导入
发表于 2006-10-13 10:45 | 显示全部楼层
原帖由 founder2468 于 2006-10-13 10:33 发表
是我没有说清楚.看原题
clear
clc
a=
load canshu.mat  %导入S参数
m=2 %端口数
n=3 %频点数
for p=1:n  %频率循环
   S=
   c=S*a
   b(1:m,p)=c  % 改成b(2,j)=c不行
   for k=1:m
   R=b(k,p)/a( ...


你把全部程序直接贴上来,我可真的没有心思看,而且也未必看懂。建议用把问题的精髓抽取出来,然后简单的用一些变量或者语言表达
 楼主| 发表于 2006-10-13 10:50 | 显示全部楼层
a=[1 2 ;3 4]  b=[2 3;4 5]  c=[3 4; 5 6]  d=[4 5;6 7] 都是2维方阵,
s=[a(1,:)   b(1,:)
     c(1,:)    d(1,:)]
我想用s(1)的形式访问a(1,:)不行,有没有好的办法?
发表于 2006-10-13 11:05 | 显示全部楼层
原帖由 founder2468 于 2006-10-13 10:50 发表
a=  b=  c=  d= 都是2维方阵,
s=[a(1,:)   b(1,:)
     c(1,:)    d(1,:)]
我想用s(1)的形式访问a(1,:)不行,有没有好的办法?



把s定义为cell类型可以吗?这样访问起来就方便得多了,直接s(1)就ok了
 楼主| 发表于 2006-10-13 11:15 | 显示全部楼层
非常感谢!应该可以
不过我还想问一下,可不可以进行2级访问
譬如访问a(1,:)中的第2个元素,用s(1)(2),应该是不行的,
该如何表示了?
发表于 2006-10-13 11:25 | 显示全部楼层
原帖由 founder2468 于 2006-10-13 11:15 发表
非常感谢!应该可以
不过我还想问一下,可不可以进行2级访问
譬如访问a(1,:)中的第2个元素,用s(1)(2),应该是不行的,
该如何表示了?


如果s是cell类型,则:

b = s{1};
b(2)
 楼主| 发表于 2006-10-13 11:29 | 显示全部楼层
可不可以对变量名进行循环
譬如s11,s12,s13,s14,s15,能不能对它们建立一个循环?
另外,怎么把s矩阵定义为cell型?麻烦您简单的 写一下
发表于 2006-10-13 11:48 | 显示全部楼层
原帖由 founder2468 于 2006-10-13 11:29 发表
可不可以对变量名进行循环
譬如s11,s12,s13,s14,s15,能不能对它们建立一个循环?
另外,怎么把s矩阵定义为cell型?麻烦您简单的 写一下

自己找点资料,做一下,试过了才知道可不可以
试过了不行,再来问也不迟
关于s矩阵定义为cell型,网上一搜索就能找到的
eight一再的启发,是希望你自己去解决问题,而不是他送佛送到西
 楼主| 发表于 2006-10-13 11:53 | 显示全部楼层
哎,惭愧!是我太懒了
发表于 2006-10-13 12:08 | 显示全部楼层
原帖由 founder2468 于 2006-10-13 11:29 发表
可不可以对变量名进行循环
譬如s11,s12,s13,s14,s15,能不能对它们建立一个循环?
另外,怎么把s矩阵定义为cell型?麻烦您简单的 写一下



变量名循环用eval命令吧
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-12 17:17 , Processed in 0.079947 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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