[已解决] 怎么把ans的数据储存为一个矩阵

[复制链接]
143344 发表于 2022-6-15 09:35:31
程序算出来个矩阵但是是ans,怎么把这个矩阵赋值给Y,求助

这个是程序算出来的数据

这个是程序算出来的数据

最佳答案


20141303 发表于 2022-6-15 09:52:08
仅供参考,在程序最上面加上一句
  1. Y=buildYus();
复制代码

试试

8 条回复


20141303 发表于 2022-6-15 09:39:03
仅供参考,试试在命令窗口输入
  1. Y=ans;
复制代码

143344 发表于 2022-6-15 09:40:38
20141303 发表于 2022-6-15 09:39
仅供参考,试试在命令窗口输入

有了,但我怎么在程序里直接赋值给Y呢

143344 发表于 2022-6-15 09:42:42
function Ybus=buildYus()
    %调用data输入参数
    data;
    %变压器π型等效导纳参数
    trans=zeros(size(transData ,1),5);
    trans(:,1:2)=transData(:,1:2);
    for k=1:size(transData,1)
        if transData(k,5)   %变压器阻抗归算到1侧计算导纳矩阵
            trans(k,3)=1/(transData(k,3)*transData(k,4));
            trans(k,4)=(transData(k,4)-1)/(transData(k,3)*transData(k,4));
            trans(k,5)=(1-transData(k,4))/(transData(k,4)^2*transData(k,3));
        else   %变压器阻抗归算到K侧计算导纳矩阵
            trans(k,3)=transData(k,4)/transData(k,3);
            trans(k,4)=(transData(k,4).^2-transData(k,4))/transData(k,3);
            trans(k,5)=(1-transData(k,4))/transData(k,3);
        end
    end
    %节点数
    nodeNum=max([lineData(:,1)' lineData(:,2)' transData(:,1)' transData(:,2)']);
    %计算节点导纳矩阵
    Ybus=zeros(nodeNum);
    %根据线路参数修改节点导纳矩阵
    n1=lineData(:,1);
    n2=lineData(:,2);
    for k=1:size(lineData,1)
        %判断线路参数若为双回线,则阻抗减半,导纳加倍
        if lineData(k,5)
            lineData(k,3)=lineData(k,3)/2;
            lineData(k,4)=2*lineData(k,4);
        end
        Ybus(n1(k),n2(k))=Ybus(n1(k),n2(k))-1/lineData(k,3);
        Ybus(n2(k),n1(k))=Ybus(n2(k),n1(k))-1/lineData(k,3);
        Ybus(n1(k),n1(k))=Ybus(n1(k),n1(k))+1/lineData(k,3)+lineData(k,4)/2;%对地导纳Y/2
        Ybus(n2(k),n2(k))=Ybus(n2(k),n2(k))+1/lineData(k,3)+lineData(k,4)/2;
    end
    %根据变压器参数修改节点导纳矩阵
    n1=trans(:,1);
    n2=trans(:,2);
    for k=1:size(trans,1)
        Ybus(n1(k),n2(k))=Ybus(n1(k),n2(k))-trans(k,3);
        Ybus(n2(k),n1(k))=Ybus(n2(k),n1(k))-trans(k,3);
        Ybus(n1(k),n1(k))= Ybus(n1(k),n1(k))+trans(k,4)+trans(k,3);
        Ybus(n2(k),n2(k))= Ybus(n2(k),n2(k))+trans(k,5)+trans(k,3);
    end
end

20141303 发表于 2022-6-15 09:42:53
即定义变量呀,Y直接放入计算得出结果的那行代码里就行

143344 发表于 2022-6-15 09:44:03
143344 发表于 2022-6-15 09:42
function Ybus=buildYus()
    %调用data输入参数
    data;

这是原程序,运行后出来的就是ans然后那个矩阵,右边工作区显示的是ans,我想把工作区的数值赋值给Y这个矩阵,应该怎么写

143344 发表于 2022-6-15 09:47:53
20141303 发表于 2022-6-15 09:42
即定义变量呀,Y直接放入计算得出结果的那行代码里就行

他它提示我  (数或变量 'ans' 无法识别。)

20141303 发表于 2022-6-15 09:52:08
仅供参考,在程序最上面加上一句
  1. Y=buildYus();
复制代码

试试
回复此楼

143344 发表于 2022-6-15 10:43:32
20141303 发表于 2022-6-15 09:52
仅供参考,在程序最上面加上一句

试试

有用nice,太感谢了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表